Хотите напечатать значение с плавающей запятой через 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
Я хочу напечатать число с плавающей запятой одинарной точности (дд, 4 байта), однако printf печатает 0,000000 Изменение
fp dd 1.1
to
fp dq 1.1 ; store double-precision floating-point(dq, 8 bytes)
а также
movss xmm0, [fp]
to
movsd xmm0, [fp] ; move double-precision floating-point (8 bytes)
решает проблему. Не могли бы вы объяснить, почему?