【问题标题】:Format of a jump table跳转表的格式
【发布时间】:2014-08-04 21:30:51
【问题描述】:

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

生成的输出如下所示:

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

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

【问题讨论】:

  • 您是否阅读了 gdb 手册以了解 x 的作用?

标签: assembly gdb jump-table


【解决方案1】:

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

你没有粘贴真正的 GDB 输出,它看起来像:

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

(第一列不同)。在编程中,细节很重要

如果你让终端变窄,那么你会得到 2 列,如下所示:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2010-12-02
    • 2017-12-02
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    相关资源
    最近更新 更多