编译器的设计与实现ppt课件

编译器的设计与实现ppt课件

ID:33544396

大小:217.00 KB

页数:67页

时间:2018-05-25

编译器的设计与实现ppt课件_第1页
编译器的设计与实现ppt课件_第2页
编译器的设计与实现ppt课件_第3页
编译器的设计与实现ppt课件_第4页
编译器的设计与实现ppt课件_第5页
资源描述:

《编译器的设计与实现ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译器的设计与实现ppt制作:张云时间:2008-03回顾语言设计简单的C目标机器建模编译系统框架一些主要的数据结构(词法节点,语法节点,中间表示,目标代码)目标代码的运行本节内容描述目标代码的生成:如何从中间表示(语法树)得到目标代码呢?示例:声明语句赋值语句If语句while语句函数调用与返回问题要处理什么样的C代码?对应的语法树结构(中间表示)是什么?对应什么样的asm代码?如何生成目标代码?具体实现编译器前端编译器后端源程序中间表示目标代码*.c*.asm语法树要处理什么样的C代码?简化的C函数调用与返回If语句While语句赋值语句表达式数组声明语句控制

2、语句示例intf1(intx,inty){if(x

3、idWidget(intx,inty){inta,b;a=x+y;b=x-y;}变量名类型数组?位置其它xint01yint02aint01bint02函数名返回类型参数个数参数列表局部变量个数局部变量列表wigetvoid22…ba返回地址主调函数的bpXY…bpsp相对位置!对于例子intp;p=1;变量名类型数组?地址其它pint01aint12…在遇到intp;语句的时候,建立对应的符号表项,如图:遇到赋值语句p=1;以后,查找符号表中名称为p的项,找到p的相对地址1,因此,p的地址是:bp+1+1同样,可以得到数组元素a[2]的地址a的地址=bp+1+2

4、a[2]的地址=bp+1+2+2ppcA[0]Old_bpA[1]A[2]……bp0+1+2+3+4+5asm代码p=1;(假定p的相对地址为1)生成代码如下:movax,1mov[bp+1+1],axa[2]=7;(假定a的相对地址为2)生成代码如下:movax,7mov[bp+1+2+2],ax赋值语句具体实现扫描语法树的过程中,遇到赋值节点赋值节点p1switch(tn.NType){caseNodeType.AssignStm:if(tn.child[0].NType==NodeType.VarID){//根据变量名查找符号表,取出变量的地址varaddr

5、=varProcess(tn.child[0]);//表达式语句处理;最终结果存放到ax中expProcess(tn.child[1]);Codetmpcode=this.NextCode();tmpcode.Op="MOV";tmpcode.Arg1=varaddr;tmpcode.Arg2="AX";}break;……}//查找符号表,找出变量的相对地址,构造变量的地址,返回stringvarProcess(TreeNodetn){Stringvaraddr;//局部变量?参数变量?全局变量?注意区分!VarInfoVarsym=getvar(symtable

6、,tn);If(varsym!=null){Varaddr=“[bp+1+”+Varsym.rva+”]”;}Returnvaraddr;}voidexpProcess(TreeNodetn){switch(tn.NType){caseNodeType.VarID:varaddr=varProcess(tn);tmpcode=NextCode();tmpcode.Op="MOV";tmpcode.Arg1="AX";tmpcode.Arg2=varaddr;break;caseNodeType.ConstID:tmpcode=NextCode();tmpcode.

7、Op="MOV";tmpcode.Arg1="AX";tmpcode.Arg2=tn.nodestr;break;caseNodeType.ADD:expProcess(tn.child[1]);tmpcode=NextCode();tmpcode.Op="MOV";tmpcode.Arg1=“BX";tmpcode.Arg2=“AX”;expProcess(tn.child[0]);Tmpcode=NextCode();tmpcode.Op=“ADD";tmpcode.Arg1=“AX";tmpcode.Arg2=“BX”;break;caseNodeType.

8、FunCa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。