跳转表的格式

时间:2014-06-14 13:10:03

标签: assembly gdb jump-table

我正在阅读有关跳转表的课程示例。他们致电gdb x/8g 0x123456

结果输出如下:

0x123456    0x000000000000134234    0x0000000000005f424
0x123487    0x0000000000001dd1ac    0x000000000000ef327

我认为跳转表将地址映射到应该执行的代码的地址。那么为什么有3列(不应该是2?)。

1 个答案:

答案 0 :(得分:1)

  

为什么有3列(不应该是2?)

您没有粘贴真正的GDB输出,如下所示:

0x123450    0x000000000000134234    0x0000000000005f424
0x123460    0x0000000000001dd1ac    0x000000000000ef327

(第一栏不同)。在编程中,详细信息重要

如果你让终端更窄,那么你将获得2列,如下所示:

0x123450    0x000000000000134234
0x123458    0x0000000000005f424
0x123460    0x0000000000001dd1ac
0x123468    0x000000000000ef327

正如KerrekSB建议的那样,阅读GDB手册以了解x的作用。提示:第一列并不重要 - 它就是表本身的存储位置。