[英]Strange variables with gdb
我正在使用gdb来调试x86程序集中的程序。 虽然我有一些变量的奇怪行为,但我无法理解为什么。
这就是我定义和查看它们的方式:
section .data
CountDied: dd 0000
OnesFound: db 00
section .text
global _start
_start:
nop
... code
当我逐步运行gdb时,检查变量是否在第一条指令处具有正确的值,并得到以下结果:
print CountDied
$1=0
print OnesFound
$2=167772672
虽然在下一个说明中,OnesFound似乎表现得很正确。 我真的很困惑。 谢谢你的建议。
程序集“variable”只是内存中特定点的标签。 GDB不知道应该有多大,它只是假设它是一个32位的值。
您获得的数字的十六进制表示为0x0A000200。 x86是一个小端平台,因此它实际上将作为00 02 00 0A
存储在内存中。 只有第一个字节实际上是您设置的值的一部分,并且设置正确。
您可以使用命令x/b &OnesFound
而不是使用print来查看所需的特定字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.