如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32) [英] how to use aarch64-linux-gnu-objdump to disassemble V7 mode instructions (A32,T32)
问题描述
我正在使用 aarch64-linux-gnu-objdump
反汇编部分 ARM v8 程序.它适用于 V8 64 位指令,但在模式更改为 V7 指令集(A32)时失败 - 代码作为 V8 指令集启动,切换到 A32(AArch32 执行状态),然后切换到 T32
- 拇指指令集.如何反汇编A32和T32指令?当模式切换时,我是否需要将代码分解成部分,以便我有单独的指令模式块?
Im using aarch64-linux-gnu-objdump
to disassemble part of a program for ARM v8. It works well for V8 64 bit instructions, but fails when the mode is changed to V7 instruction set(A32) - the code starts as V8 instruction set, switches to A32 ( AArch32 execution state) and than to T32
- thumb instruction set. how can I disassemble the A32 and T32 instructions? Do I need to break the code to parts when the mode switches, so that i have separate instruction mode blocks?
任何帮助将不胜感激Weselfox
any help would be appreciated Weselfox
推荐答案
与 32 位工具链中的 A32(ARM")和 T32(Thumb")不同,32 位工具链之间没有交叉指令集支持位和 64 位 ARM 架构.A64 确实是一个全新的指令集.
Unlike for A32 ("ARM") and T32 ("Thumb") within a 32-bit toolchain, there is no cross-instruction-set support between 32-bit and 64-bit ARM architectures. A64 really is a completely new instruction set.
由于 64 位和 32 位状态之间不存在互通(您只能在出现异常时更改宽度"),因此在正常使用中这不是问题.但是当构建一个包含多个异常级别代码的独立图像时,我可以想象它会变得有点乏味.
Since interworking does not exist between the 64-bit and 32-bit states (you can only change 'width' on taking an exception) this is not an issue in normal usage. But when building a standalone image containing code for several exception levels I can imagine it will get a bit tedious.
A64 部分需要使用 aarch64-linux-gnu-,A32/T32 部分需要使用 arm-linux-gnueabihf-.
You need to use aarch64-linux-gnu- for A64 portions and arm-linux-gnueabihf- for A32/T32 portions.
这篇关于如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!