ARM裸机编程中的汇编语言知识
---参考朱有鹏ARM裸机课程
1、可编程的器件
但是很多芯片都是不需要编程,比如很多开关电源的芯片。
模拟就是用模拟的电平控制的,数字电平还分为CMOS电平和TTL电平。
模拟器件 ---》 数字器件
ASIC ---》 可编程器件
ASIC:专用的芯片,硬编码,它用硬件已经把芯片的功能已经设置好了。
一个芯片只能完成一个任务
到了现在的智能手机的时代,直接用APP使用,灵活性越来越大,变成可编程的器件。
定制产品的趋势。
可编程器件特点:
1、CPU在固定的频率的时钟控制下节奏运行
2、CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行
3、本质上是一串由1和0组成的数字,这就是CPU的汇编指令集
这个指令没有定义的时候,这些指令是别人先定义好的
编译器中编译程序中的流程:
2、汇编语言的本质:
机器指令的(机器码)的助记符,是一种低级的符号语言。
机器指令集是一款CPU的编程特征,是这款CPU的设计者制定者。
CPU的内部电路设计就是为了实现这些指令集的功能,机器指令集就好像CPU的API接口一样。
机器指令的实质是一串010101的数字。数字电路其实就是由这些东西控制的。
编程的框架:给我们开放的编程接口。
CPU指令集:就是CPU的API函数
基本模块都是用CPU指令集的调用。
其中实现里面的模块是用非常复杂的组合逻辑电路,比如相加和相乘。
3、编程语言的发展过程:
1、纯机器码编程
2、汇编语言编程 发明了这门语言的编译器
3、C语言编程
4、C++语言编程
5、JAVA C#等语言的编程
6、脚本语言编程
总结:
1、汇编语言就是CPU的机器指令集的助记符,是一款CPU的本质的特征
2、不同的CPU的机器指令集设计不同,因此汇编程序不能在不同的CPU间互相的移植。
3、使用汇编程序可以充分的发挥CPU的设计的特点,所以汇编编程的效率最高,因此在操作系统内核中效率及其重要的地方都需要用汇编处理。(考虑CPU之间的特点)
中断处理一般是用汇编来实现的。在这些关键性能的地方,要汇编写比较好。
自己的一点理解:
很多时候,我们会直接从互联网里面下载你需要的程序,为啥人家编译在自己的机器是
可以编译成功的,但是为什么我们自己编译时不能成功的?
学了这个短短的视频后,我觉得其中一个很重要的原因是;
如果你用的是人家的汇编的程序的话,那么不同芯片之间会不能用了。
而你如果用的是C语言开发的话,那么如果你和发布者用的编译器是不一样的话,
很可能编译出来的东西在你那里就不能直接用,需要进行一点处理。
编译器把C语言转换为汇编语言,以及可以在你的机器运行的可执行的程序。
所以很多人发布程序的时候,不会直接的发布BIN文件等可执行文件。