编译器是干什么的?

编译器完成高级语言到汇编程序的解析,它的工作过程划分为前端和后端,前端对源程序进行分析,把源程序切分成一些基本块并生成中间语言表示,后端在分析正确无误之后,把中间语言表示转化为目标机器支持的汇编语言。编译器完整的工作过程由以下阶段:

 

      中间语言有很多种表示方式,包括语法树,后缀表示法和三地址码等,它们需要具备的共同特点是易于生成和易于译成目标代码。

代码优化阶段主要是为了提高中间代码的质量,以便提高目标程序的运行速度。代码优化既可以在语义分析之后完成,也可以在中间代码生成之后完成。

     目标代码生成是把优化好的中间代码转化为目标机器的指令代码(汇编代码)。这个过程仍然需要做很多分析、优化、变形。代码生成器要对源程序中使用的变量分配寄存器,然后为每条中间语言选择合适的机器指令,包括机器指令的操作码和编址模式。

     编译器的前端依赖于被编译的语言,前端还包括与这几个部分相关的符号表操作,错误处理以及与目标机器无关的代码优化过程。

     编译过程中和目标机器相关的部分属于编译程序的后端,后端与源语言无关,只和中间代码有关。后端包括代码优化中涉及目标机器的部分,目标代码生成以及相关的符号操作及错误处理。

     编译器的一个极为重要的功能是对程序中错误的反应,几乎在编译的每个阶段都可以诊查出错误。在词法分析阶段会发现字符的拼写错误,在语法分析阶段会检查单词串是否违反语言的结构规则,语义分析中,编译器进一步检查语法上正确但无意义的操作成分。作用

猜你喜欢

转载自blog.csdn.net/qq_26591517/article/details/80383955