如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(A32,T32) [英] how to use aarch64-linux-gnu-objdump to disassemble V7 mode instructions (A32,T32)

查看:62
本文介绍了如何使用aarch64-linux-gnu-objdump反汇编V7模式指令(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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆