汇编语言与高级语言的区别
- 从可移植性方面考虑
汇编无可移植性,C语言有一定可移植性,Java等更高级语言移植性更强。
汇编语言没有可移植性。是由于每一款CPU都有其自己的指令集,即使是有相同的指令集的不同芯片,汇编的语法也可能会有所不同。汇编语言的编写都是针对具体的某一种芯片,汇编语言对硬件的依赖程度很高。所以其可移植性很差。
相对于汇编语言,C语言有一定可移植性。用C语言编写的代码,可以用于不同的CPU上。每一款CPU都有其自己特定的C语言编译器,用与之对应的C编译器编译出来的可执行程序,便可以正确的运行。 - 从执行效率方面考虑
汇编语言效率最高,C语言次之,Java等更高级语言效率更低。 - 从编写难度方面考虑
汇编难写,C语言和高级语言好写。
汇编不适合完成大型复杂的项目,更高级语言更适合完成更大、更复杂的项目。
汇编语言的本质
汇编的实质是机器指令(机器码)的助记符,是一种低级符号语言。汇编器的工作就是将汇编语言替换成与之对应的机器码。
机器指令集(汇编指令集)是一款CPU的编程特征,是这款CPU的设计者制定的。CPU的内部电路设计就是为了实现这些指令集的功能。机器指令集就好象是CPU的API接口一样。
程序员用汇编指令编程 –经汇编器汇编成二进制可执行程序文件–>二进制文件被CPU读取进去–>CPU内部电路对二进制文件解码–>解码通过则CPU执行指令、完成指令动作。
如果程序员用C语言等高级语言编程,则编译器先将C语言程序编译为汇编程序,再进行上面的后续部分。
CPU在固定频率的时钟控制下节奏运行。
CPU可以通过总线读取外部存储设备中的二进制指令集(机器码),然后解码执行。这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字。这就是CPU的汇编指令集。
参考来源:朱有鹏老师视频教程课件 网友文章