GNU 汇编程序没有给出正确的浮点值

GNU assembler is not giving the proper floating point value

我正在尝试编写以下代码:

.data
float_val: .float 0e122.23
.text
.global _start
_start:
fldl float_val
mov ,%rax
xor %rdi,%rdi
syscall

使用gdb后,st(0)中的值有些垃圾。为什么这样?我不明白问题出在哪里。 YASM 对应方工作正常。

根据the GAS manual,浮点指令的助记符后缀与整数不同。整数指令对 32 位双字使用 l 后缀;但对于浮点指令,l 用于 64 位双精度数。您将 s 用于 32 位单精度浮点数。所以写 flds float_val 它应该可以工作。