编译器是干什么的?

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

 

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值