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

Assembly ARM-如何将汇编代码转换为机器语言,assembly,binary,arm,hex,machine-language,Assembly,Binary,Arm,Hex,Machine Language,我正在学习汇编语言,我试图理解如何在汇编语言和机器语言之间转换。我试图阅读一些资料,甚至询问我的教授,但都没有任何帮助。以下是我正在编写的代码: MOV R10, #63488 LSL R9, R6, #7 STR R4, [R11, R8] ASR R6, R7, R3 我发现了一个ARM-to-HEX转换器网站,这是转换: 3EABA0E3 8693A0E1 08408BE7 5763A0E1 有人能帮我解释一下这是怎么回事吗?非常感谢你 您需要的是ARM(架构参考手册),该手册可

我正在学习汇编语言,我试图理解如何在汇编语言和机器语言之间转换。我试图阅读一些资料,甚至询问我的教授,但都没有任何帮助。以下是我正在编写的代码:

MOV R10, #63488 
LSL R9, R6, #7 
STR R4, [R11, R8] 
ASR R6, R7, R3
我发现了一个ARM-to-HEX转换器网站,这是转换:

3EABA0E3
8693A0E1
08408BE7
5763A0E1

有人能帮我解释一下这是怎么回事吗?非常感谢你

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

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

科林的答案基本上就是答案,只是添加了一些更多信息。您需要的工具称为汇编器,而不是arm-to-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
00000000:
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中有很好的文档记录,可能从ARMv5开始,它是较旧的不太复杂的版本。ARMv6、ARMv7有更多的操作系统和保护功能,大部分是相同的指令集,虽然有更多的thumb指令,但ARMv8是与AARC32的混合,旧的ARMv4到ARMv7指令集,然后是同一内核中的全新AARC64指令集。因此,谷歌arm架构参考手册,一些人非法地把它们放在周围,或者去infocenter.arm.com获取真正的。科林的答案基本上就是答案,只是添加了一些更多的信息。您需要的工具称为汇编器,而不是arm-to-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
00000000:
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中有很好的文档记录,可能从ARMv5开始,它是较旧的不太复杂的版本。ARMv6、ARMv7有更多的操作系统和保护功能,大部分是相同的指令集,虽然有更多的thumb指令,但ARMv8是与AARC32的混合,旧的ARMv4到ARMv7指令集,然后是同一内核中的全新AARC64指令集。因此,谷歌arm架构参考手册,一些人非法将它们放在周围,或者去infocenter.arm.com获取真实的。你检查过答案了吗?在使用该网站时,你假设使用什么处理器或架构?“你在上什么课?这只是家庭作业吗?”格里沙利维特,谢谢。我错过了这个。我会检查的。@InfinitelyManic处理器/架构是ARM@Ani-是的-但是ARM下有不同的微体系结构。看见如果我使用汇编代码假设ARMv7指令集,那么机器代码将不同于您发布的代码。例如,使用覆盆子Pi2的e3a0ab3e、e1a09386、e78b4008、e1a06357。您是否检查了答案?在使用该站点时,您假设的处理器或体系结构是什么?“你在上什么课?这只是家庭作业吗?”格里沙利维特,谢谢。我错过了这个。我会检查的。@InfinitelyManic处理器/架构是ARM@Ani-是的-但是ARM下有不同的微体系结构。看见如果我使用汇编代码假设ARMv7指令集,那么机器代码将不同于您发布的代码。例如,使用覆盆子Pi2的e3a0ab3e、e1a09386、e78b4008、e1a06357。它不是最方便用户的:P,但我会再试一次!这不是最方便用户的:P,但我会再试一次!我和一些人一起工作,得到了与你建议的相同的答案。我们正在使用Keil开发的名为uVision的工具来构建目标并进行调试。我将试着看看调试过程是否向我展示了一些有用的东西。但我希望最终能够不用任何工具手动跟踪它:PTrace什么机器代码?虽然技术上可行,但这是一种痛苦,不值得荣誉勋章。ARM编码到处都是,因此需要大量的工作让工具来完成。例如,如果它是mips或其他一些,那么查看机器代码并亲自解码就非常容易。更有趣/有用的是从头开始编写自己的反汇编程序,知识相同,应用不同。我与一些人一起工作,得到了与您建议的相同的答案。我们正在使用Keil开发的名为uVision的工具来构建目标并进行调试。我将试着看看调试过程是否向我展示了一些有用的东西。但我希望最终能够不用任何工具手动跟踪它:PTrace什么机器代码?虽然技术上可行,但这是一种痛苦,不值得荣誉勋章。ARM编码到处都是,因此需要大量的工作让工具来完成。例如,如果它是mips或其他一些,那么查看机器代码并亲自解码就非常容易。更有趣/有用的是从零开始编写自己的反汇编程序,同样的知识,不同的应用。