Space consuming != inefficient. When writing programs you're generally more concerned with how fast they execute, not how much space the instructions take up (which is normally small/dwarfed by the memory used by the program for variables/data anyways). Space consumption is only really an issue when you don't have the source code, when you are modified the compiled executable by itself, which is a bit of a rare scenario to be in.
The C code compiles to more instructions, due in part to it trying to take advantage of pipelining and due in part to it just translating C instructions to ASM reliably (but perhaps "dumbly), but the resulting ASM from the C code doesn't execute much slower than the ASM alternative you proposed, even though it's more instructions/takes up more space. I'd have to explain a bit about how pipelining works though in order for that to make sense since logically, more steps should make it slower. But thanks to how it orders those instructions they can go faster than you'd think, due to the pipelining of the processor.
I'm really just kind of offended that you'd call C of all languages "inefficient", since it's probably one of the most efficient (fastest) languages out there. It just shows ignorance in your post.