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