From: anton@nospicedham.mips.complang.tuwien.ac.at   
      
   Alex writes:   
   >On 64 bit Windows, stack alignment on a 16 byte boundary is required   
   >before calling all except a leaf function. In the called function, the   
   >stack is 8 mod 16.   
   >   
   >Now, I'm struggling to come up with a way of doing it beyond this code   
   >(which I didn't invent, but I can't for the life of me remember where I   
   >found it.)   
   >   
   > push rsp   
   > push [rsp]   
   > and spl $F0   
   > call funkychicken   
   > pop rsp   
   >   
   >It seems to be the only way of doing this without branches, flags or   
   >other expensive nonsense. But, as ever, there may be a better way. Any   
   >suggestions?   
      
   The usual way (when you are in an ABI-compliant function yourself) is   
   that your function adjusts the stack pointer by 8 mod 16 in a   
   statically known way.   
      
   - anton   
   --   
   M. Anton Ertl Some things have to be seen to be believed   
   anton@mips.complang.tuwien.ac.at Most things have to be believed to be seen   
   http://www.complang.tuwien.ac.at/anton/home.html   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|