我正在使用 aarch64-linux-gnu-objdump
反汇编 ARM v8 的部分程序。它适用于 V8 64 位指令,但当模式更改为 V7 指令集(A32)时失败 - 代码以 V8 指令集启动,切换到 A32(AArch32 执行状态),然后切换到 T32 > - 拇指指令集。如何反汇编A32和T32指令?当模式切换时,我是否需要将代码分解为多个部分,以便我有单独的指令模式 block ?
如有任何帮助,我们将不胜感激 狼人狐
最佳答案
与 32 位工具链中的 A32(“ARM”)和 T32(“Thumb”)不同,32 位和 64 位 ARM 架构之间不存在跨指令集支持。 A64确实是一个全新的指令集。
由于 64 位和 32 位状态之间不存在互通(您只能在出现异常时更改“宽度”),这在正常使用中不是问题。但是,当构建包含多个异常级别的代码的独立镜像时,我可以想象它会变得有点乏味。
对于 A64 部分,您需要使用 aarch64-linux-gnu-,对于 A32/T32 部分,需要使用 arm-linux-gnueabihf-。
关于arm - 如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556051/