这个东西不是简单明了能够说明白的,原谅!
我们的计算机能够执行的是一条一条用二进制数字写成的指令,在CPU读取这些指令时会用其内部的译码部件把这些数字翻译成一定的操作,从而指导计算机完成该做什么,怎么做的问题.
在同一架构的CPU中,机器指令是相同的,或是向下兼容的.硬件工程师们在设计CPU时,综合考虑各方面的情况,最终形成了若干条指令(就像我们所写的程序都可以用三种基本结构写成一样),然后再把这若干条指令镌刻在CPU中,用硬件部分予以实现(电子电路中能够讲到).
由于每种CPU的设计者和设计理念不同,因此,形成了各种各样的CPU或单片机品牌,像我们常用的pentium和amd都是属于80x86架构的,此外还有mcs51单片,arm芯片,motorola的680X00系列等.
再说下汇编语言:
由于机器指令是一串可执行的数字代码,因而我们一般人是不会记也很难记住的,为了解决这个问题,所以才发明了汇编语言,用助记符来代替相应的机器语言.所以汇编语言与机器语言是一一对应的,CPU内部有多少条机器指令,就会相应有多少条汇编指令.
高级语言:
由于汇编语言只是机器语言的符号化,虽说相对简单了,但是还是得要求人们学习相应的内部结构,对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员用高级语言指令写完源程序后,只需用编译器编译就可运行了.此时编译器所做的工作就是把高级语言指令翻译成汇编语言(机器语言).由于每种机器对应的指令不同,所以在不同架构的机器下,就会有着不同的编译器.
从上我们可以知道,机器语言 汇编语言是基于机器的,在80x86下能够运行的程序,放到arm下肯定没法运行,为什么?因为其机器结构不同,内部的硬件实现不同.所以说其移植性差.
那为什么说高级语言移植性就好呢?是因为他不是用汇编语言写的.在80x86下用c写了一个程序,我们可以用mcs51下用mcs51的c编译器进行编译,将关键字翻译成mcs51的汇编指令就可以了.
打的太多了,希望你能明白.
参考资料:无,自写