因此,我认为我应该为在堆栈和XMM
寄存器之间移动数据提供简单的辅助函数,但是我再次出现段错误。应该如何正确地做到这一点?下面是我当前的段错误代码:
pushxmm0:
SUB RSP, 8;Move the stack
MOVSD QWORD [RSP], XMM0
RET
popxmm0:
MOVSD XMM0, QWORD [RSP]
ADD RSP, 8;Move the stack
RET
main:
;Do stuff here
CALL pushxmm0
;Do more stuff
CALL popxmm0 ;Restore the register value (segfault)
编辑:这与函数的调用有关吗?
在执行pushxmm0
例程的第一条指令之前,堆栈看起来像这样: