为什么RSP或其他寄存器在64位系统中是32位?

问题描述

编译后,我检查文件:

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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...