hel*_*eer 5 memory assembly stack operating-system xv6
我正在运行xv6- 由 MIT 制造的操作系统。我正在运行 gdb 来检查堆栈指针(?)。我正在运行gdb以查看堆栈指针寄存器的值。
我的教授说“让我们看看堆栈”然后输入x/24x $esp.
问题:什么是x, /, 24, $esp??? $esp 只是一个显示堆栈寄存器当前地址的堆栈指针?
我得到的输出是:
(gdb) x/24x $esp
0x7bdc: 0x00007db4 0x00000000 0x00000000 0x00000000
0x7bec: 0x00000000 0x00000000 0x00000000 0x00000000
0x7bfc: 0x00007c4d 0x8ec031fa 0x8ec08ed8 0xa864e4d0
0x7c0c: 0xb0fa7502 0xe464e6d1 0x7502a864 0xe6dfb0fa
0x7c1c: 0x16010f60 0x200f7c78 0xc88366c0 0xc0220f01
0x7c2c: 0x087c31ea 0x10b86600 0x8ed88e00 0x66d08ec0
Run Code Online (Sandbox Code Playgroud)
我从谷歌找到了一些参考:
x/6x $esp 以查看 int 放入堆栈中的内容。
(gdb) x/6x $esp
0x7bdc: 0x00007db4 0x00000000 0x00000000 0x00000000
0x7bec: 0x00000000 0x00000000
Run Code Online (Sandbox Code Playgroud)
这对我来说没有意义。
PS此时我需要找到堆栈的开头和堆栈上的项目。(一旦我理解了这个命令!)
参考:https : //pdos.csail.mit.edu/6.828/2012/lec/l-interrupt.html