繁体   English   中英

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

[英]ARM - How to convert Assembly code into machine language

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

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开始的,ARMv5是较老的不太复杂的代码。 ARMv6,ARMv7具有更多的操作系统和保护功能,尽管指令指令集更多,但大多具有相同的指令集,尽管ARMv8是将aarch32与较早的ARMv4至ARMv7指令集混合在一起,然后将其与同一内核中的全新aarch64指令集混合在一起。 因此,Google Arm体系结构参考手册中,有些人非法地将他们留在身边或去infocenter.arm.com来获取真实的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM