home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,971 of 4,675   
   Rick C. Hodgin to Alex   
   Re: 64 bit stack alignment   
   29 Aug 17 14:25:28   
   
   From: rick.c.hodgin@nospicedham.gmail.com   
      
   On 8/29/2017 2:00 PM, Alex wrote:   
   > On 29-Aug-17 18:06, Alex wrote:   
   >> The only thing I can think of that doesn't involve branching is an   
   >> algorithm like this (completely untested, and I'm using r15 as an   
   >> arbitrarily chosen register, it can be changed to any other reg):   
   >>   
   >>       xor     r15,r15   
   >>       test    rsp,0Fh         ; See if we're already aligned   
   >>       setnz   r15b            ; Set to 0 or 1 based on   
   alignment   
   >>       shl     r15,3           ; Multiply by 8   
   >>       sub     rsp,r15         ; Adjust rsp by 0 or 8   
   >>       call    funkychicken    ; Perform the normal call   
   >>       add     rsp,r15         ; Un-adjust rsp by 0 or 8   
   >>   
   >> Note also that this has the effect of pushing your parameters up   
   >> on the stack an additional 8-bytes, so you may need to do this   
   >> first ... I don't know.  I've always kept the stack 8-byte aligned   
   >> and everything worked, so I'm not really sure what you're doing   
   >> here.   
   >   
   > OK, at the cost of a register (preferably one that doesn't get   
   > scratched, which makes R15 OK) we could do   
   >   
   >        mov   r15 esp   
   >        sub   esp $10  ; 16 decimal   
   >        and   spl $F0   
   >        call  dotheconga   
   >        mov   rsp r15   
      
   Nice.  That would work.   
      
   I love teamwork. :-)  It's always much easier to edit than it is   
   to create.   
      
   Thank you,   
   Rick C. Hodgin   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca