问题描述
编译后,我检查文件:
file program.out
program.out: ELF 64-bit LSB shared object,x86-64,version 1 (SYSV),dynamically linked,interpreter /lib64/ld-linux-x86-64.so.2,for GNU/Linux 3.2.0
然后运行GDB:
[+] Debug with GDB ...
Reading symbols from program.out...done.
(gdb) break main
Breakpoint 1 at 0x642: file program.c,line 5.
(gdb) run
Starting program: /home/storenth/program.out
Breakpoint 1,main () at program.c:5
warning: Source file is more recent than executable.
5 int i;
(gdb) i r rsp rbp
rsp 0x7fffffffd9a0 0x7fffffffd9a0
rbp 0x7fffffffd9b0 0x7fffffffd9b0
(gdb) print sizeof($rsp)
$1 = 8
(gdb) x/8x $rsp
0x7fffffffd9a0: 0xffffda90 0x00007fff 0x00000000 0x00000000
0x7fffffffd9b0: 0x55554680 0x00005555 0xf7a05b97 0x00007fff
任何人都可以向我解释为什么RSP寄存器在x86-64机器上包含32位而不是64位的四个值吗?为什么要有四个值,而不仅仅是一个值(对于i
局部变量)?这个寄存器的最小和最大大小是多少?谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)