我会尽量保持代码简洁。这是一个要求用户输入 2 个值的片段。将它们放在 xmm0 和 xmm1 中。将它们加在一起,然后将它们存储回 xmm0。不过,输出始终只是 double xmm1。
即用户输入5和7,然后输出14。什么时候应该输出12。
;Prompt user
call scanf
==========将数据移入寄存器==================
pop r14
push r14
movsd xmm0, [rsp] ;moves inputed number into SSE register xmm0
pop r14
;Prompt user again
call scanf
==========将更多数据移入寄存器==================
pop r15
push r15
movsd xmm1, [rsp] ;moves inputed number into SSE register xmm1
pop r15
=========数学=========
addsd xmm0, xmm1 ;xmm0 = xmm0 + xmm1
=====打印到屏幕=====
mov rdi, floatformat
mov qword rax, 1
call printf