ARM裸机编程需要知道的汇编知识1---可编程逻辑器件

ARM裸机编程中的汇编语言知识

                               ---参考朱有鹏ARM裸机课程

1、可编程的器件


但是很多芯片都是不需要编程,比如很多开关电源的芯片。

模拟就是用模拟的电平控制的,数字电平还分为CMOS电平和TTL电平。

模拟器件 ---》   数字器件

ASIC       ---》   可编程器件

ASIC:专用的芯片,硬编码,它用硬件已经把芯片的功能已经设置好了。

             一个芯片只能完成一个任务


到了现在的智能手机的时代,直接用APP使用,灵活性越来越大,变成可编程的器件。

定制产品的趋势。


可编程器件特点:

1、CPU在固定的频率的时钟控制下节奏运行

2、CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行

3、本质上是一串由1和0组成的数字,这就是CPU的汇编指令集


这个指令没有定义的时候,这些指令是别人先定义好的


编译器中编译程序中的流程:

ARM裸机编程需要知道的汇编知识1---可编程逻辑器件


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文件等可执行文件。