12
是否有將XMM寄存器中的壓縮雙字整數推送到堆棧的方法?然後在需要時彈出回來?
將XMM寄存器推入堆棧
理想我正在尋找像PUSH或POP的通用寄存器,我已經檢查了英特爾的手冊,但我要麼錯過了命令,或者沒有一個......
否則我將不得不將值解壓到通用寄存器然後推送它們?
是否有將XMM寄存器中的壓縮雙字整數推送到堆棧的方法?然後在需要時彈出回來?
將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
在這種情況下,你也可以用丹尼爾斯的解決方案!
感謝您的回答。基於此(你的解決方案並不完全正常),我想出了一個工作的(見我的問題)。仍然被標記爲答案... – 2012-04-15 12:46:08
@Daniel Gruszczyk:是的,你也可以使用ebp,但要確保ebp寄存器設置正確。如果ebp設置不正確,請記住其他推送或調用指令可能會覆蓋堆棧上的數據。 – 2012-04-15 13:10:24
可能值得編輯與你最終工作的答案,只是爲了幫助看到這個問題的未來用戶。 – 2012-04-15 13:13:34