【发布时间】:2024-01-15 09:47:01
【问题描述】:
我想用 printf 打印一个浮点值
global main
extern printf
section .data
string: db `%f\n`, 0
section .bss
rs: resq 1
[...]
movq xmm0, [rs]
mov rdi, string
mov rax, 0
call printf
rs 包含浮点值 1.6
(gdb) x/fg &rs
0x600ad8 <rs>: 1.6000000000000001
但程序会打印
[username@localhost folder]$ ./programname
0.000000
谁可以让程序打印 1.6?我做错了什么?
【问题讨论】:
-
对齐问题与Printing floating point numbers from x86-64 seems to require %rbp to be saved重复,但第一部分(关于AL =寄存器中FP args的数量)不是。
标签: assembly printf nasm x86-64 calling-convention