浮点数在fasm中返回0,在内联汇编中有效。
- 论坛
- 浮点数在fasm中返回0,在内联汇编中有效。
4 浏览
浮点数在fasm中返回0,在内联汇编中有效。
我正在尝试在x86_64汇编中打印一个浮点数,但它只打印为零。
关于这个问题已经有一些问题了。其中一个问题通过确保在%al中设置使用的矢量寄存器的数量来解决。另一个问题显示需要具有16字节的堆栈对齐。但是,我正在做这两件事情,仍然没有得到正确的输出。
这是我的程序:
# 打印一个浮点数值 .section .rodata .fmt: .string "num: %f\n" .num: .float 123.4 .section .text .global main .type main, @function main: subq $8, %rsp # 16字节对齐 # 打印我的数字 movss .num, %xmm0 # 加载浮点值 movq $.fmt, %rdi # 加载格式字符串 movb $1, %al # 使用1个矢量寄存器 call printf # 退出 addq $8, %rsp # 撤销对齐 movq $0, %rax # 返回0 ret