info registers命令以原始格式(十六进制)和自然格式打印寄存器。
自然格式是基于寄存器的类型,在gdb的源代码中的xml文件中声明。例如,i386/64bit-core.xml包含:
可以看到,与type="int64"和type="int32"寄存器在其自然输出显示为十进制值,因为它们通常是通用寄存器,并且可以同时用于参考存储器和分配值。
虽然寄存器type="data_ptr"和type="code_ptr"的自然格式为十六进制值,因为它们通常用于引用内存地址。
对于具有type="i386_eflags"的寄存器,输出设置为“真”的标志,因为对于该寄存器,对于人来说,知道哪个标志设置为“真”而非十六进制值会更有意义。
对于其他体系结构,它取决于如何在其源代码中定义寄存器类型。你可以看一下ARM,ARM-64,x86-32bit的源代码和其他许多在binutils-gdb/gdb/features/
编辑:
对不起,我忘了提到的来源。