GDB:打印二进制值忽略前导零?

GDB:打印二进制值忽略前导零?,gdb,nasm,yasm,Gdb,Nasm,Yasm,我正在用y汇编程序编写一些简单的汇编程序。然而,我注意到,尽管我可以很好地检查内存中的二进制值,但打印它们(在寄存器中)会忽略前导零。这让我措手不及,所以我想知道这是否有原因 节目 GDB 在与mov eax[f]相对应的行上设置断点后,我使用examine命令获得以下二进制值: (gdb) x/1tw &f 0x601030: 01000000000100000000000000000000 我已经手动验证了这一点。但是,print命令加载到eax寄存器后会产生一些不同的结果

我正在用y汇编程序编写一些简单的汇编程序。然而,我注意到,尽管我可以很好地检查内存中的二进制值,但打印它们(在寄存器中)会忽略前导零。这让我措手不及,所以我想知道这是否有原因


节目
GDB 在与
mov eax[f]
相对应的行上设置断点后,我使用examine命令获得以下二进制值:

(gdb) x/1tw &f
0x601030:   01000000000100000000000000000000
我已经手动验证了这一点。但是,print命令加载到
eax
寄存器后会产生一些不同的结果:

(gdb) p/t $eax
$2 = 1000000000100000000000000000000
前者是32位,而后者是31位。前导零被省略。我在显示这些值时是否做错了什么

我在显示这些值时是否做错了什么

不。GDB在处理
x
p
命令之间的前导零时不一致,仅此而已


如果要打印前导零,请使用
p/tz$eax
()。

谢谢!这个提示非常有用!据我所见,
p/tz
p/z
是一样的,它以十六进制打印,而不是二进制打印(尽管它确实保留前导零)。我找不到一种方法使GDB以二进制打印并包含前导零。我在GDB8.2.1上,供参考。
(gdb) p/t $eax
$2 = 1000000000100000000000000000000