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

标签 arm disassembly objdump arm64 linaro

我正在使用 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/

相关文章:

c++ - 段错误 : and the disassembly is different between objdump and gdb

assembly - IDA 专业版 : How to modify a function to always return true?

gcc - ARM 程序集 : . LANCHOR0

gcc - LDMIA 指令在皮质 M4 的外部 SRAM 上无法正常工作

MIPS反汇编: lui followed by lbu

c - C 二进制中的整数 : viewing it using readelf, objdump 或类似

assembly - objdump 输出中的 data16 是什么意思?

arm - Android Studio 无法在配备 32 位 Ubuntu 12.04 w/JDK-8 的 Samsung ARM Chromebook 上加载

cuda - 反汇编的 CUDA 微代码中的明显冗余操作

C 到汇编代码 - 这是什么意思