我正在用y汇编器编写一些简单的汇编程序。但是,我注意到,尽管我可以很好地检查内存中的二进制值,但是(在寄存器中)打印它们会忽略前导零。这一直使我措手不及,所以我想知道是否有原因。
segment .data
f dd 2.25 ; 32-bit floating point.
segment .text
global main
main:
mov eax, [f]
xor rax, rax
ret
在与mov eax, [f]
对应的行上设置断点后,我使用检查命令获得了以下二进制值:
(gdb) x/1tw &f
0x601030: 01000000000100000000000000000000
我已经手动验证了这一点。但是,一旦将print命令加载到eax
寄存器中,它会产生不同的结果:
(gdb) p/t $eax
$2 = 1000000000100000000000000000000
前者是32位,而后者是31位。前导零被省略。在显示这些值时我做错什么了吗?
答案 0 :(得分:0)