发 帖  
原厂入驻New

[经验] 如何编写用于使用Raspberry Pi编程32位ARM内核的汇编指令

2020-9-4 14:15:44  242 Raspberry Pi ARM内核 汇编
分享
0
本文探讨了对32位ARM内核进行编程所需的基本指令,同时建立了对微体系结构的基础理解。

在当今的现代技术文化中,汇编的说唱不好。由于大量的RAM和处理能力,诸如C#和Python之类的高级语言为实现大量抽象铺平了道路。在某些情况下,这极大地提高了生产率,而在另一些情况下,则使整个一代程序员都忽略了代码的实际作用。
在本文中,我们将使用可构建的程序集基础,同时使用其中最广泛的体系结构之一。话虽如此,本文针对的是那些对编写低级代码没有经验的人。由于其受欢迎程度和易用性,我使用Raspbian在Raspberry Pi上编写了该程序集。

为什么要学习汇编语言编码?在深入研究示例程序之前,让我们先谈谈为什么值得使用汇编代码。
现实情况是处理器被构建为运行指令。汇编代码是这些指令的人类可读表示,并且通常是人们可以接近的机器编码。


图1. 来自Motorola 6800 8位微处理器的汇编语言示例。

通过了解汇编,您可以确切地了解特定处理器的工作方式,因为您可以看到每个指令中每个位的作用。书写组件将您带入飞行员座位。它使您可以在最低级别上控制机器,同时了解机器的工作原理。
你是否想和从未真正坐在驾驶舱里的人一起坐飞机?当然,他们已经掌握了模拟器。但是没有什么比真实的东西更真实的了。

如何使用Raspberry Pi和Linux组装和执行汇编程序
让我们快速使用Raspberry Pi组装和执行程序。
由于我们正在使用Raspberry Pi,因此我们正在处理32位ARM内核。如前一篇文章所述,这意味着我们专注于32位ARMV7指令和32位寄存器。(注意:运行Raspbian的RPi的更高版本使用64位ARMV8处理器,但与旧版V7版本一样,以32位模式运行。)
汇编器希望指令能理解程序的布局。然后,它使用标签移动到不同的位置。上面显示的程序代表了我们将在汇编程序中使用的基本结构。欲了解更多的GNU汇编程序,这里是一个快速参考指南。

步骤1:适当保存您的代码
Linux命令行是汇编程序的最简单方法。
通过键入ctl + alt + t或通过Raspbian用户界面导航到命令终端来打开终端。你的源代码应在文本编辑器中编写,并以“ .s”扩展名保存。
一旦文件保存在目录中,就可以进行汇编和链接。

步骤2:将程序组装到目标文件中
下面,我们从一个名为“ myProg.s”的汇编程序(在本文末尾以可下载的.zip文件链接)开始,然后将其汇编为一个名为“ myProg.o”的目标文件。

步骤3:创建一个可执行文件
接下来,我们使用链接器将目标文件转换为可执行文件,在这种情况下为“程序”。

步骤4:运行程序
最后,我们运行程序。

as -o myProg.o myProg.s
ld -o Program myProg.o

./Program

步骤5:退出程序
出口标签下的最后一部分是Raspbian操作系统用于退出程序的系统调用。

_exit:   
    MOV R7, #1        @ Set R7 for syscall exit
    SWI     0        @ execute syscall exit

本文结尾处包含一个示例程序,让你入门。


更好地了解您的处理器,编写更高效的代码

在上几篇文章中,我们介绍了ARM指令集中使用的一些基本指令。我们研究了ARM寄存器文件及其在处理器微体系结构中的位置。我们还检查了指令 在位级别的样子,以及汇编助记符如何编码到这些位中。
现在,我们已将这些信息综合为适用的情况。
这里的最终目标是激发您的胃口。编写汇编仍在进行编码,但是要尽可能地低。通过这种方式,您实际上可以了解处理器对程序的处理方式。通过了解给定处理器的程序集,你可以实现难以置信的高效代码,执行低级配置或构建超薄操作系统。越来越多的嵌入式设备使用ARM内核,并且在这些设备上运行的代码必须尽可能高效。
随着高级语言不断抽象出计算机的功能,越来越少的工程师和程序员将了解他们的系统的真正工作原理。无论您是对数字设计还是嵌入式系统感兴趣,了解组装都会使您有一定的了解水平,这将使棘手的问题变得更容易,复杂的设计也更加简单明了。



发烧友们可以从下面下载示例ARM汇编代码:

myProg.s.zip

下载积分: 积分 -1 分

1.93 KB, 下载次数: 0, 下载积分: 积分 -1 分

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表