4

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

任何帮助将不胜感激 Weselfox

4

1 回答 1

4

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

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

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

于 2014-02-04T18:42:30.630 回答