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
它应该可以工作。
我正在尝试编写以下代码:
.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
它应该可以工作。