32位寄存器名称以E开头,64位寄存器以R开头.E和R代表什么?是否有理由选择这些字母?
此外,在64位寄存器中,我们也可以在任何低级调试器(如Windbg)中看到,最右边的位仍然用与64位寄存器相同的名称引用,除了名称以E.例如,64位系统中RAX寄存器的最右边32位称为EAX.
那么,E和R代表什么?而且,为什么后缀X用于注册?
这是我的C代码
C:\Codes>gdb test -q
Reading symbols from C:\Codes\test.exe...done.
(gdb) list 1,15
1 #include<stdio.h>
2
3 int main()
4 {
5 int a = 12345;
6 int b = 0x12345;
7 printf("+-----+-------+---------+----------+\n");
8 printf("| Var | Dec | Hex | Address |\n");
9 printf("+-----+-------+---------+----------+\n");
10 printf("| a | %d | 0x%x | %p |\n",a,a,&a);
11 printf("| b | %d | 0x%x | %p |\n",b,b,&b);
12 printf("+-----+-------+---------+----------+\n");
13
14 return 0;
15 }
(gdb) set disassembly-flavor intel
Run Code Online (Sandbox Code Playgroud)
这是标准输出
C:\Codes>test
+-----+-------+---------+----------+
| Var …Run Code Online (Sandbox Code Playgroud)