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

时间:2014-02-04 15:08:00

标签: arm disassembly objdump arm64 linaro

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

任何帮助将不胜感激 Weselfox

1 个答案:

答案 0 :(得分:3)

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

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

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