4.RSIC和CSIC汇编指令集


4.1.可编程器件的工作原理
(1)电子器件的发展方向:由模拟器件转向数字器件(比如电视机的从模拟电视到数字电视的发展);由ASIC(专用芯片,又称为硬编码,一个芯片只能完成一个任务,需要频繁更换芯片)转向可编程器件(CPU,其功能可后天被编程改变)。
(2)可编程器件的特点:CPU在固定频率的控制下有节奏的运行(譬如说210的主频为1G);CPU可以通过总线读取外部存储设备(譬如说内存)中的二进制指令集,然后解码执行;被CPU解码执行的二进制指令集是CPU设计的时候确定的,其本质上是一串由1和0组成的数字,这就是CPU的汇编指令集(譬如ARM公司是整个CPU规则的设定者,三星公司按照ARM制定的规则生产CPU,编译器开发商按照ARM规则制造编译器,程序员进行编程然后使用编译器进行编译然后放在CPU里面执行)。
(3)源代码编译及运行过程:程序员用汇编指令编程–>经汇编器汇编成二进制可执行程序文件–>二进制文件被CPU读取进去–>CPU内部电路对二进制文件解码–>解码通过则CPU执行指令、完成指令动作。如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,再进行上面的后续部分(见图1)。


4.2.指令集对CPU的意义
(1)汇编语言与C等高级语言的差异:汇编较C语言来讲编写难度较大;汇编没有可移植性,C语言有一定的可移植性(C语言可移植性受限于操作系统);Java等更高级语言可移植性更强(Java可跨操作系统);汇编语言效率最高(在操作系统内核的关键部分使用),C语言次之(应用于操作系统层面),Java等更高级语言效率最低(应用于纯应用层面);汇编不适合完成大型复杂的项目,更高级语言更适合完成更大、更复杂的的项目。
(2)汇编语言的本质:汇编的实质是机器指令(机器码)的助记符,是一种低级符号语言;机器指令集是一款CPU的编程特征,是该款CPU的设计者制定的,CPU的内部电路设计就是为了实现这些指令集的的功能,机器指令集就好像CPU的API接口一样。
(3)编程语言的发展过程:纯机器码编程(使用机器码进行编程)–>汇编语言编程(使用汇编器将汇编语言翻译成机器码)–>C语言编程(屏蔽汇编语言和机器之间的紧密结合,可使用不同的编译器编译同一个源代码分别在两种平台上运行)–>C++语言(C++能够编写出更复杂和庞大的程序)–>Java/C#等语言(进一步简化编程)–>脚本语言编程(脚本语言1行=Java语言10行=C++语言20行=C语言100行=汇编语言1000行)。
(4)总结:汇编语言就是CPU的机器指令集的助记符,是一款CPU的本质特征;不同CPU的机器指令集的设计不同,因此汇编程序不能在不同CPU之间相互移植;使用汇编编程可以充分发挥CPU的设计特点,所以汇编编程效率最高,因此在操作系统内核中效率极其重要处都需要用汇编处理。


4.3.RISC和CISC的区别
(1)CISC(complex-instruction-set-computer复杂指令集CPU);CISC体系的设计理念是用最少的指令来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂(内部电路非常庞大,功耗非常大),但好处是编译器好设计;CISC出现较早,至今Intel还一直采用CISC设计。
(2)RISC(Reduced-Instruction-Set-Computer精简指令集CPU);RISC的设计理念是让软件来完成具体的任务,CPU本身仅提供基本功能指令集;因此RISC的CPU的指令集中只有很少的指令,这种设计相对于CISC,CPU的设计和工艺简单了(内部电路较少,功耗很低),但是编译器的设计变难了。
(3)CPU设计方式发展:早期简单CPU,指令和功能都很有限;CISC年代的CPU功能扩展依赖于指令集的扩展,实质是CPU内部组合逻辑电路的扩展;RISC年代的CPU仅提供基础功能指令(譬如内存与寄存器通信指令,基本运算与判断指令等),功能扩展由使用CPU的人利用基础架构来灵活实现。
(4)典型CISC的CPU指令在300条左右,ARM的CPU(RISC)常用指令30条左右。后续发展趋势是没有纯粹的RISC或CISC,而是RISC与CISC结合形成一种介于2者之间的CPU类型。


4.RSIC和CSIC汇编指令集_第1张图片


你可能感兴趣的:(arm裸机)