编译器
来自站长百科
编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
词条简介[ ]
高级计算机语言便于人编写,阅读,维护。低阶机器语言是计算机能直接解读、运行的。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高级语言 (High-level language), 如 Pascal、C、C++、C#、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
工作原理[ ]
- 编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
- 机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的可执行程序。
编译语言与直译语言对比[ ]
- 许多人将高阶程序语言分为两类:编译型语言和直译型语言。然而,实际上,这些语言中的大多数既可用编译型实现也可用直译型实现,分类实际上反映的是那种语言常见的实现方式。(但是,某些直译型语言,很难用编译型实现。比如那些允许 在线代码更改 的直译型语言。)
工作方法[ ]
- 首先编译器进行语法分析,也就是要把那些字符串分离出来。
- 然后进行语义分析,就是把各个由语法分析分析出的语法单元的意义搞清楚。
- 最后生成的是目标文件,也称为obj文件。
- 再经过链接器的链接就可以生成最后的可执行代码了。
- 有些时候需要把多个文件产生的目标文件进行链接,产生最后的代码。这一过程称为交叉链接。