有没有办法将压缩双字整数从 XMM 寄存器推送到堆栈?然后在需要时将其弹出?
理想情况下,我正在为通用寄存器寻找 PUSH 或 POP 之类的东西,我已经检查过英特尔手册,但我要么错过了命令,要么没有……
或者我是否必须将值解包到通用寄存器然后推送它们?
最佳答案
不,x86 下没有这样的 asm 指令,但是您可以执行以下操作:
//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
在这种情况下,您也可以使用 Daniels 解决方案!
关于assembly - 将 XMM 寄存器压入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161911/