Home 代码生成
代码生成
取消

代码生成

一、代码生成阶段

源程序——>前端——中间代码——>代码优化器——中间代码——>代码生长器——>目标程序

代码生成涉及:存储管理,指令选择,寄存器分配,计算次序选择

 

二、目标程序

1、绝对机器语言程序

2、可重定位机器语言程序

        允许程序模块分别编译

        调用其他先前编译好的程序模块

3、汇编语言程序

        免去编译器重复汇编器的工作

三、指令选择

    1、影响因素

        目标机器的指令系统的性质

        指令系统的统一性和完备性

        指令的速度和机器方言

    2、寄存器

        寄存器中的指令通常比内存中的短一些,同时执行也快一些

        寄存器分配:选择驻留在寄存器中的一组变量        :要放哪些变量

        寄存器指派:挑选变量要驻留的具体寄存器           :要用哪些寄存器

    3、计算次序的选择

        选择需要较少的寄存器来保存中间结果

        但是寻找最优的计算次序是一个NP完全问题

四、目标机器

    1、指令系统

                        附加代价表

    2、附加代价

        指令代价取成1加上他的源和目标地址模式的附加代价

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

该博客文章由作者通过 CC BY 4.0进行授权。