Push XMM register to the stack

12,095

No, there is no such a asm instruction under x86, but you can do something like:

//Push xmm0
sub     esp, 16
movdqu  dqword [esp], xmm0

//Pop xmm0
movdqu  xmm0, dqword [esp]
add     esp, 16

EDIT:

Upper code sample is direct push/pop emulation.

In case that you are using on stack also other local variables, than the ebp register must be at first properly set, like:

push ebp
mov  ebp, esp
sub  esp, LocaStackVariablesSize
//... your code
mov  esp, ebp
pop  ebp  
ret

In that case you can also use Daniels solution!

Share:
12,095
Daniel Gruszczyk
Author by

Daniel Gruszczyk

Currently working in UK as a Software Developer. In my spare time I am rock climbing and MTB racing.

Updated on July 05, 2022

Comments

  • Daniel Gruszczyk
    Daniel Gruszczyk almost 2 years

    Is there a way of pushing a packed doubleword integer from XMM register to the stack? and then later on pop it back when needed?

    Ideally I am looking for something like PUSH or POP for general purpose registers, I have checked Intel manuals but I either missed the command or there isn't one...

    Or will I have to unpack values to general registers and then push them?