为什么将float移动到xmm0会导致输出为0?
- 论坛
- 为什么将float移动到xmm0会导致输出为0?
8 浏览
为什么将float移动到xmm0会导致输出为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