Dan, 

> Is there a performance difference between the movl + movl and 
> pushl code sequences? 

Not in this example, but movl is faster in some circumstances than pushl.  A 
sequence of pushl has an implicit dependency chain on %esp, as it changes after 
each pushl, whereas a sequence of movl could enjoy better ILP.  However, movl 
is quite longer than pushl, as you pointed out, which may affect cache 
efficiency.  

Therefore, the sweet spot is somewhere in the middle.  It's more important to 
use movl wisely in prologs and epilogs than when passing arguments though.  
For, as RTH mentioned, -maccumulate-outgoing-args is desirable to avoid 
frequent stack maintenance.

That being said, it depends largely on the underlying architecture 
implementation.

HTH


-- 
_______________________________________________________
Evandro Menezes            AMD               Austin, TX

Reply via email to