我正在学习汇编语言,并且试图了解如何在汇编语言和机器语言之间进行转换。我正在尝试阅读资源等,甚至询问我的教授,但没有任何帮助。这是我正在处理的以下代码:
MOV R10, #63488
LSL R9, R6, #7
STR R4, [R11, R8]
ASR R6, R7, R3
我找到了一个 ARM 到 HEX 转换器网站,这是转换:
3EABA0E3
8693A0E1
08408BE7
5763A0E1
有人可以帮我解释一下这是如何工作的吗?太感谢了!
我正在学习汇编语言,并且试图了解如何在汇编语言和机器语言之间进行转换。我正在尝试阅读资源等,甚至询问我的教授,但没有任何帮助。这是我正在处理的以下代码:
MOV R10, #63488
LSL R9, R6, #7
STR R4, [R11, R8]
ASR R6, R7, R3
我找到了一个 ARM 到 HEX 转换器网站,这是转换:
3EABA0E3
8693A0E1
08408BE7
5763A0E1
有人可以帮我解释一下这是如何工作的吗?太感谢了!
您需要的是 ARM ARM(架构参考手册),可从 Arm 的网站免费获得,但您可能需要注册。它包含所有可用指令的编码。
科林的答案基本上就是答案,只是添加了更多信息。您需要的工具称为汇编器,而不是手臂到十六进制转换器。然后,您可以使用反汇编程序查看它,例如使用 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 以获取真实的。