想要在程序集中通过printf打印浮点值
segment .data
float_fmt db "%f", 0xa, 0
fp dd 1.1
segment .text
global main
extern printf
main:
push rbp
mov rbp, rsp
lea rdi, [float_fmt]
movss xmm0, [fp]
mov eax, 1
call printf
leave
ret
我想打印单精度浮点数(dd,4字节), 但是,printf打印0.000000 改变
fp dd 1.1
到
fp dq 1.1 ; store double-precision floating-point(dq, 8 bytes)
和
movss xmm0, [fp]
到
movsd xmm0, [fp] ; move double-precision floating-point (8 bytes)
解决了这个问题。 你能解释一下原因吗?