我正在学习汇编语言,我正在尝试理解如何在汇编语言和机器语言之间进行转换。我正在尝试阅读消息来源,甚至询问我的教授,但没有人有所帮助。这是我正在研究的以下代码:
MOV R10, #63488
LSL R9, R6, #7
STR R4, [R11, R8]
ASR R6, R7, R3
我找到了一个ARM到HEX转换器网站,这是转换:
3EABA0E3
8693A0E1
08408BE7
5763A0E1
有人可以帮我解释一下这是如何运作的吗?非常感谢!
答案 0 :(得分:4)
您需要的是ARM ARM(架构参考手册),可以在Arm的网站上免费获得,但您可能需要注册。它包含所有可用指令的编码。
答案 1 :(得分:2)
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获得真实的。