我正在使用aarch64-linux-gnu-objdump
来反汇编ARM v8程序的一部分。它适用于V8 64位指令,但在模式更改为V7指令集(A32)时失败 - 代码以V8指令集开始,切换到A32(AArch32执行状态)而不是T32
- 拇指指令系统。如何拆卸A32和T32指令?当模式切换时,是否需要将代码分解为部分,以便我有单独的指令模式块?
任何帮助将不胜感激 Weselfox
答案 0 :(得分:3)
与32位工具链中的A32(“ARM”)和T32(“Thumb”)不同,32位和64位ARM体系结构之间不存在交叉指令集支持。 A64确实是一个全新的指令集。
由于64位和32位状态之间不存在交互操作(您只能在发出异常时更改“宽度”),因此在正常使用情况下这不是问题。但是,在构建包含多个异常级别代码的独立映像时,我可以想象它会变得有点乏味。
你需要使用aarch64-linux-gnu-用于A64部分,使用arm-linux-gnueabihf-用于A32 / T32部分。