为什么移动浮动到xmm0导致输出0

时间:2016-09-16 15:37:24

标签: assembly floating-point printf abi

想要在程序集中通过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)

解决了这个问题。 你能解释一下原因吗?

0 个答案:

没有答案