| Wouldn't it be better to use `pushl 4(%esp)' instead of loading it to %eax | and then pushing it (which probably causes pipeline stall as well)? No, the Intel docs say that for any x86 other than a 386, it is faster to do the load and then push (and in fact, gcc does this).