【问题标题】:how to use aarch64-linux-gnu-objdump to disassemble V7 mode instructions (A32,T32)如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32)
【发布时间】:2014-02-28 15:11:08
【问题描述】:

我正在使用aarch64-linux-gnu-objdump 为 ARM v8 反汇编程序的一部分。它适用于 V8 64 位指令,但当模式更改为 V7 指令集(A32)时失败 - 代码以 V8 指令集开始,切换到 A32(AArch32 执行状态),然后切换到 T32 - thumb 指令集.如何反汇编 A32 和 T32 指令?模式切换时是否需要将代码拆分为多个部分,以便我有单独的指令模式块?

任何帮助将不胜感激 韦塞尔克斯

【问题讨论】:

    标签: arm disassembly objdump arm64 linaro


    【解决方案1】:

    与 32 位工具链中的 A32(“ARM”)和 T32(“Thumb”)不同,32 位和 64 位 ARM 架构之间不支持交叉指令集。 A64 真的是一个全新的指令集。

    由于 64 位和 32 位状态之间不存在互通(您只能在发生异常时更改“宽度”),这在正常使用中不是问题。但是当构建一个包含多个异常级别代码的独立图像时,我可以想象它会变得有点乏味。

    A64 部分需要使用 aarch64-linux-gnu-,A32/T32 部分需要使用 arm-linux-gnueabihf-。

    【讨论】:

    • 我明白了。我认为由于寄存器宽度和拇指指令是 arm v8 64 位架构的一部分,因此在 linaro 工具链中会有一个反汇编选项,但我会尝试按照您的建议进行操作。这是一个具有不同异常级别的独立图像。顺便说一句。谢谢
    猜你喜欢
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多