1

我正在学习汇编语言,并且试图了解如何在汇编语言和机器语言之间进行转换。我正在尝试阅读资源等,甚至询问我的教授,但没有任何帮助。这是我正在处理的以下代码:

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

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

3EABA0E3
8693A0E1
08408BE7
5763A0E1

有人可以帮我解释一下这是如何工作的吗?太感谢了!

4

2 回答 2

4

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

于 2017-02-01T08:14:26.837 回答
3

科林的答案基本上就是答案,只是添加了更多信息。您需要的工具称为汇编器,而不是手臂到十六进制转换器。然后,您可以使用反汇编程序查看它,例如使用 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 以获取真实的。

于 2017-02-02T02:48:53.100 回答