这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 2022年了,还在用汇编写单片机程序?

共3条 1/1 1 跳转至

2022年了,还在用汇编写单片机程序?

高工
2022-06-06 10:20:25     打赏

写单片机程序到底用汇编还是C语言,也是一直存在的争议。


还是先摆出观点:


如果你只是想用单片机玩玩,做一些简单DIY应用,那么C语言足够,但是如果你想在走入嵌入式技术行业,精进原理,那么,用心学学古老但经典的汇编是肯定不会错的!  /* 请注意加粗字眼*/


汇编能完成C语言完成不了的功能

作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。


Linux 内核,虽然绝大部分代码是用  C  语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux  的启动部分。


由于这部分代码与硬件的关系非常密切,即使是 C语言也会有些力不从心,而汇编语言则能够很好的扬长避短,最大限度地发挥硬件的性能。


举例:


Bootloader、启动代码都是用汇编写的。


如果想从事嵌入式技术的同学,Linux下做开发肯定是逃不掉的。


在Linux下的Bootloader种类比较多,都是开放源代码的,现在比较流行用u-boot,


什么是Bootloader?


简单的说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,以便为最终调用操作系统做好准备。


Bootloader的启动过程又分为两个阶段stage1和stage2。


stage1全部由汇编编写,它的主要工作是初始化硬件设备、为加载Bootlodader的stage2准备RAM空间、拷贝Bootloader的stage2到RAM空间、设置好堆栈段为stager2的C语言环境做准备。


由于每种嵌入式设备的硬件都不尽相同,所以肯定会存在需要修改Bootloader的,也就是Bootloader移植。


如果不懂汇编,咋移植?


帮助我们更加透彻理解底层

我们在学习编程的时候,其实就是在学高级语言,也就是那些为人类设计的计算机语言。


机器语言是纯粹的二进制数据表示的语言,是电脑可以真正识别的语言。


汇编语言和高级语言经过编译连接最终都会变成机器语言才能被CPU识别和运行。
汇编语言离机器更近,高级语言离人更近。


所以,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。学会高级语言,并不等于理解计算机实际的运行步骤。


计算机真正能够理解的是低级语言,它专门用来控制硬件。汇编语言就是低级语言,直接描述/控制 CPU 的运行。如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言。


比如大家学编程的过程中,是否有这种疑问:


指针究竟是怎么运作的?


定义变量时变量的名字和变量值是不是存在相同的地址?


有些场合为什么要定义静态变量?


想要了解上述的几个问题,必须了解汇编,这就是汇编的魅力,帮助我们更加了解底层,了解你所写的代码。






关键词: 汇编     单片机     C语言    

专家
2022-06-06 10:21:21     打赏
2楼

感谢分享


专家
2022-06-06 10:36:08     打赏
3楼

谢谢楼主分享,受教了


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]