如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32)

Wea*_*Fox 4 arm objdump disassembly linaro arm64

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

如有任何帮助,我们将不胜感激

uni*_*urf 5

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

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

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