ARM - 如何将汇编代码转换为机器语言

时间:2017-01-31 20:26:35

标签: assembly binary arm hex machine-language

我正在学习汇编语言,我正在尝试理解如何在汇编语言和机器语言之间进行转换。我正在尝试阅读消息来源,甚至询问我的教授,但没有人有所帮助。这是我正在研究的以下代码:

MOV R10, #63488 
LSL R9, R6, #7 
STR R4, [R11, R8] 
ASR R6, R7, R3

我找到了一个ARM到HEX转换器网站,这是转换:

3EABA0E3
8693A0E1
08408BE7
5763A0E1

有人可以帮我解释一下这是如何运作的吗?非常感谢!

2 个答案:

答案 0 :(得分:4)

您需要的是ARM ARM(架构参考手册),可以在Arm的网站上免费获得,但您可能需要注册。它包含所有可用指令的编码。

答案 1 :(得分:2)

科林的答案基本上就是答案,只是增加了一些信息。您需要的工具称为汇编程序,而不是arm到hex转换器。然后,您可以使用反汇编程序查看它,例如使用您的程序使用gnu工具:

arm-none-eabi-as so.s -o so.o
arm-none-eabi-objdump -D so.o

产生

00000000 <.text>:
   0:   e3a0ab3e    mov r10, #63488 ; 0xf800
   4:   e1a09386    lsl r9, r6, #7
   8:   e78b4008    str r4, [r11, r8]
   c:   e1a06357    asr r6, r7, r3

处理器如何解释机器代码在ARM ARM中有详细记载,可能从ARMv5开始,而旧的不那么复杂。 ARMv6,ARMv7具有更多的操作系统和保护功能,大多数指令集相同,虽然更多的拇指指令,然后ARMv8是aarch32与旧版ARMv4到ARMv7指令集的混合,然后是一个全新的aarch64指令集在同一个核心。所以google arm架构参考手册,有些人非法离开他们或者去infocenter.arm.com获得真实的。