第1页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共4页实验八目标程序生成【实验目的】•了解目标代码生成阶段在编译处理过程中的功能和作用•了解常用的三种目标代码形式及其优缺点•了解虚拟机及其指令系统•深入理解并掌握有中间代码向目标代码转换的过程和原理【实验学时】4学时【实验要求】•熟练掌握虚拟机的指令系统•理解并掌握指令选择的方法•理解多寄存器分配的原则和方法•熟练掌握基本语句从四元式中间代码形式到目标代码的翻译原理和方法•独立完成目标代码生成程序【实验原理】一、四元式到目标代码的转换分析1.取ARG结构值对应的目标代码四元式中间代码的操作分量和目标量以ARG结构给出,在生成目标代码的过程中,首先要根据ARG结构取得对应的值或者地址,存入累加寄存器ac中,再生成运算的目标代码
从ARG结构取值的过程如下表所示:ARG结构种类取值对应的目标代码常量cLDC,ac,c,0标号labLDC,ac,lab,0第2页共4页第1页共4页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共4页源变量或临时变量v直接变量取v的绝对地址到ac;(表-2)LD,ac,0,ac间接变量取v的绝对地址到ac;(表-2)LD,ac1,0,acLD,ac,0,ac12.取变量的绝对地址对应的目标代码如下表所示:变量种类取绝对地址对应的目标代码源变量vLDA,ac,level,displayoffADD,ac,ac,spLDC,ac1,off,0ADD,ac,ac,ac1注:level为变量v所在的层数,off为变量v的偏移
临时变量tLDC,ac1,off,0ADD,ac,sp,ac1注:off为临时变量t的偏移量二、关键问题的处理1.标号和跳转的处理:处理标号和跳转,需要用到标号地址表;表的结构为:中间代码标号目标代码地址下一项Labeldes