有没有推到堆栈从XMM寄存器打包双整数的方法吗? 并在需要时再后来就突然回来?
理想的情况是我在寻找类似PUSH或POP的通用寄存器,我已经检查了英特尔的手册,但我要么错过了命令,或者没有一个...
或者将我必须解压值通用寄存器,然后把他们?
有没有推到堆栈从XMM寄存器打包双整数的方法吗? 并在需要时再后来就突然回来?
理想的情况是我在寻找类似PUSH或POP的通用寄存器,我已经检查了英特尔的手册,但我要么错过了命令,或者没有一个...
或者将我必须解压值通用寄存器,然后把他们?
没有,有没有这样的下一个x86的指令汇编,但你可以这样做:
//Push xmm0
sub esp, 16
movdqu dqword [esp], xmm0
//Pop xmm0
movdqu xmm0, dqword [esp]
add esp, 16
编辑:
上的代码示例是直接压入/弹出仿真。
在您使用堆栈还有其他的局部变量,比的情况下ebp
寄存器必须首先正确设置,如:
push ebp
mov ebp, esp
sub esp, LocaStackVariablesSize
//... your code
mov esp, ebp
pop ebp
ret
在这种情况下,你也可以用丹尼尔斯的解决方案!
我建议使用一个单独的16位对齐栈为了这个目的,所以你可以使用的,而不是MOVDQA MOVDQU。 有一个在执行时间这两个指令之间细微的差别!