当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

吉林大学:《编译原理》课程教学资源(PPT课件讲稿)第十章 目标代码生成

资源类别:文库,文档格式:PPT,文档页数:13,文件大小:154KB,团购合买
一、目标代码(单寄存器) 二、临时变量的存储空间分配 三、寄存器的分配和释放
点击下载完整版文档(PPT)

第十章目标代码生成 ●目标代码(单寄存器) ●临时变量的存储空间分配 寄存器的分配和释放

第十章 目标代码生成  目标代码(单寄存器)  临时变量的存储空间分配  寄存器的分配和释放

目标代码 虚拟目标代码:虚拟机上的目标程序。 在本地机器上具备虚拟机的解释器。 实际目标代码:实际机器上的指令序列 绝对地址机器代码: 可重定位的机器代码: 汇编代码:

目标代码  虚拟目标代码:虚拟机上的目标程序。 在本地机器上具备虚拟机的解释器。  实际目标代码:实际机器上的指令序列 绝对地址机器代码: 可重定位的机器代码: 汇编代码:

三种硬件地址模式 指令格式: Op #c R (立即—寄存器) 0pd(R1)R2(存储器寄存器) Op D 1R2 (寄存器——-寄存器) ●几个常见指令的含义: Load Source r 从 Source读出送入R 0 o Source r Source op R结果送入R Store Target R R的内容送入 Target

三种硬件地址模式  指令格式: Op #C R (立即-----寄存器) Op d(R1) R2 (存储器-----寄存器) Op R1 R2 (寄存器-----寄存器)  几个常见指令的含义 : Load Source R 从Source 读出送入R Op Source R Source op R结果 送入R Store Target R R的内容送入Target

目标代码的生成(单寄存器 ●形如(0p,A,B,T): Loada r;0BR 形如(ASSG,A,B): Loada r; Storer B 例:z:=米*(a+b)*Y*(a+b) (+ a, b, t1)Load a R; Add b R (*,X, t1, t2) StoreR t1: Mult X R (* t2, Y, t3)Mult Y R (*,t3, t1, t4)Mult t1R

目标代码的生成(单寄存器)  形如(Op,A,B,T):Load A R;Op B R  形如(ASSIG,A,B):Load A R;Store R B  例:Z:= X*(a+b)* Y* (a+b) (+,a,b,t1) Load a R; Add b R (*,X,t1,t2) Store R t1; Mult X R (*,t2,Y,t3) Mult Y R (*,t3,t1,t4) Mult t1 R

标号和Jump的代码 鲁标号到代码地址的对应表(nag,L,Addr) 鲁形如 Labell 当对应表中没有L项时:填写表项(1,L,Pe),Pc表示 下一条目标代码的地址。 当有L项(0,L,P)时:从P顺着链回填地址Pc 鲁形如( Jump l 对应表中没有L项时构造链头P(Jump,ni): 填写表项(0,L,P); 当有表项(0,L,P)时:拉链P(JmpP),修改表项为 当有表项(1,L,P)时:取出L的地址P生成代码

标号和Jump的代码  标号到代码地址的对应表(flag, L, Addr)  形如(Label L): 当对应表中没有L项时:填写表项(1,L, Pc), Pc表示 下一条目标代码的地址。 当有L项(0, L, P’)时:从P’顺着链回填地址Pc  形如 (Jump L): 对应表中没有L项时构造链头P:(Jump,nil): 填写表项(0, L, P); 当有表项(0,L,P’)时:拉链P:(Jump P’),修改表项为 (0,L,P); 当有表项(1,L,P)时: 取出L的地址P生成代码

过程函数调用的代码 鲁主要工作: 过函调用时:申请新AR空间参数传递转向 过程体 过函入口:填写AR的相关内容。 过函返回时:释放AR区恢复信息返回值 e参数传递的代码: 值参: (VALACT, a, off, 1): Load a sp)r Store off(top)R (VALACT, A, off, 1): Load @A (sp)R Store off(top)R

过程/函数调用的代码  主要工作: 过函调用时:申请新AR空间 参数传递转向 过程体 过函入口:填写AR的相关内容。 过函返回时: 释放AR区 恢复信息 返回值  参数传递的代码: 值参: (VALACT,a,off,1):Load a(sp) R Store off(top) R (VALACT,A,off,1):Load @A(sp) R Store off(top) R

变参: (VARACT, a, off, 1): LoadA a (sp)r Store off(top)R (VARACT, A, off, 1): Load A(sp)R Store off(top)R 过函形参 (PROCACT, p, off, 1): Load Enter(p)R Store off (top) R (PROCACT, P, off, 1): Load P(sp)R Store off(top)R

变参: (VARACT,a,off,1):LoadA a(sp) R Store off(top) R (VARACT,A,off,1):Load A(sp) R Store off(top) R 过函形参: (PROCACT,p,off,1):Load Enter(p) R Store off(top) R (PROCACT,P,off,1):Load P(sp) R Store off(top) R

●过函调用Ca|:传参; (Cal l, g, True): Jump Enter(g) (Cal l, G, False): Jump @G(sp) ●入口( Entry, Labe l,size,Leve|) 填写AR信息; L oad top sp ADd top sIze ●出口( ENDPR0G,--): 恢复调用前的信息和寄存器内容; 保存返回值; Load sp top Load DyL (sp) sp; Jump Re a(top)

 过函调用Call:传参; (Call,g,True):Jump Enter(g) (Call,G,False):Jump @G(sp)  入口 (Entry,Label,size,Level) : 填写AR信息; Load top sp ADD top size  出口(ENDPROC,---): 恢复调用前的信息和寄存器内容; 保存返回值; Load sp top; Load DyL(sp) sp; Jump Re_A(top)

临时变量 鲁特点:寿命短;一次定义一次使用 e存储空间:尽可能采用共享办法 随用随分配的动态分配: 调用一个过程时,分配一个新的AR空间不包括临 时变量部分),每当要保存一个临时变量时,动态 分配到栈区的可用单元中 按共享法静态分配: 先计算出临时变量的空间,在过程调用时和源变量 起申请空间。即调用时将临时变量安排在AR中

临时变量  特点: 寿命短; 一次定义一次使用  存储空间:尽可能采用共享办法 随用随分配的动态分配: 调用一个过程时,分配一个新的AR空间(不包括临 时变量部分),每当要保存一个临时变量时,动态 分配到栈区的可用单元中 按共享法静态分配: 先计算出临时变量的空间,在过程调用时和源变量 一起申请空间。即调用时将临时变量安排在AR中

临时变量的静态分配 ●定值点:如果坤中间代码给临时变量T定值, 则称i为临时变量T的定值点。 鲁引用点:如果j中间代码使用T,则称为T的 引用点。 鲁活动区间:如果i是T的定值点,j是T的最后 引用点,则称[,j是T的活动区间。 鲁活动区间[j和Im,n不严格相交: 如果mi≥n ●空间分配: 如果两个临时变量的活动区问不严格相交,则可以 共享单元

临时变量的静态分配  定值点:如果i中间代码给临时变量T定值, 则称i为临时变量T的定值点。  引用点:如果j中间代码使用T,则称j为T的 引用点。  活动区间:如果i是T的定值点,j是T的最后 引用点,则称[i, j]是T的活动区间。  活动区间[i, j]和[m, n]不严格相交: 如果mj或i n。  空间分配: 如果两个临时变量的活动区间不严格相交,则可以 共享单元

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共13页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有