GDB寄存器与处理器寄存器不同吗?

时间:2016-05-01 13:44:43

标签: x86 gdb cpu-registers

gdb的$ pc寄存器是否与x86 32位处理器中的eip寄存器不同? gdb中有四个标准寄存器,如$ pc。那么,如果它是具有不同名称的相同寄存器,那么映射是如何完成的?

1 个答案:

答案 0 :(得分:3)

GDB中的$pc只是$EIP上的ix86$RIP x86_64$pcARM的别名1}},MIPSSPARC$ipia64等等。

  

其他三个寄存器怎么样?我的意思是$ sp,$ fp和$ ps

他们呢?在ix86上,$sp$esp的别名,在x86_64上是$RSP的别名,在MIPS上是$r29的别名1}}等等。

$ps$EFLAGSix86x86_64的别名。 MIPS上没有等效的注册表,因此$ps不会映射到那里的任何内容。

  

如果它是具有不同名称的相同寄存器,那么映射是如何完成的

在GDB内部,有一个已编译的一对一地图。

  

我没有得到关于编译一对一

的观点

字面上 GDB中的地图,如下所示:

if current target is i*86
  if the user typed $pc return $eip
  else if the user typed $fp return $ebp else
  ...
else if current target is x86_64
  if the user typed $pc return $rip
  else if the user typed $fp return $rbp
  ...

(这不是它实际实现的方式,而只是对一对一映射的解释。)