rxysg

一.编译器

编译的意思就是把程序语言写成机器可以运行的机器码的过程。其中会用到编译器。

编译器是一种特殊的程序,它可以把以特定编程语言写成的程序变为机器可以运行的机器码。

我们把一个程序写好,这时我们利用的环境是文本编辑器。这时我程序把程序称为源程序。在此以后程序员可以运行相应的编译器,通过指定需要编译的文件的名称就可以把相应的源文件(通过一个复杂的过程)转化为机器码了。

对 C 语言或者其他编译型语言来说,编译生成了目标文件,而这个目标文件是针对特定的 CPU 体系的,为 ARM 生成的目标文件,不能被用于 MIPS 的 CPU。这段代码在编译过程中就已经被翻译成了目标 CPU 指令,所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。

例如:
nginx的源码包,nginx是由c语言编写的

而编译就是将那些的代码变成机器语言,可以直接被机器执行

二.解释器

对于各种非编译型语言(例如python/java)来说,同样也可能存在某种编译过程,但他们编译生成的通常是一种『平台无关』的中间代码。

这种代码一般不是针对特定的 CPU 平台,他们是在运行过程中才被翻译成目标 CPU 指令的,有一种虚拟机来将中间代码翻译中机器语言。

因而,在 ARM CPU 上能执行,换到 MIPS 也能执行,换到 X86 也能执行,不需要重新对源代码进行编译。

例如:
python脚本,可以直接执行。python这个程序读取py脚本信息,将其翻译成0101这种机器语言,再传递给系统。

三.简单总结

1,编译型语言在编译过程中生成目标平台的指令,解释型语言在运行过程中才生成目标平台的指令。

2,编译缺点是修改麻烦,修改一个字符都要编译一次。但优点是运行快,由机器直接执行。解释型语言就是相反,编写容易,运行慢

分类:

技术点:

相关文章: