中南大学《编译原理》上机实习课程实验报告

中南大学《编译原理》上机实习课程实验报告

ID:40735089

大小:51.00 KB

页数:6页

时间:2019-08-06

中南大学《编译原理》上机实习课程实验报告_第1页
中南大学《编译原理》上机实习课程实验报告_第2页
中南大学《编译原理》上机实习课程实验报告_第3页
中南大学《编译原理》上机实习课程实验报告_第4页
中南大学《编译原理》上机实习课程实验报告_第5页
资源描述:

《中南大学《编译原理》上机实习课程实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理课程实验上机实习中南大学计算机0706班方文一、目的加强学生对编译过程的整体认识,而不是个别阶段的实习。二、实习要求扩充语句部分:for语句、repeat语句、case语句;三、PL语言及其编译程序1.词法分析2.语法分析3.语义分析及中间代码生成4.汇编代码生成四、扩充1.扩充repeat语句Ø扩充文法<循环语句>::=”repeat”<语句>”until”<表达式>Ø扩充函数:详见文件夹AssignmentØ运行示例:示例代码:programpp;varn,p:integer;procedurep2(n:integer);begin

2、repeatbegincallwrite(n);n:=n-1enduntiln=0end;begincallp2(5)end.生成中间代码:0JMP0,15------>无条件跳转1JMP0,2------>无条件跳转2ENTP2,4------>进入过程3LOD2,3------>装入变量值4WRITE0,0------>写指令5LODA2,3------>装入变量地址6LOD2,3------>装入变量值7LIT0,1------>装入常量8SUB0,0------>减9STO0,0------>将栈顶值存入栈顶次值所指单元10LOD2,3

3、------>装入变量值11LIT0,0------>装入常量12EQ0,0------>==13JPC0,3------>栈顶值为0时跳转14RETP0,0------>过程返回15ENTP1,4------>进入过程16OPAC0,0------>打开活动记录17LIT0,5------>装入常量18CALL1,2------>转子19ENDP0,0------>程序结束解释运行结果:YourOutput:5YourOutput:4YourOutput:3YourOutput:2YourOutput:11.扩充for语句Ø扩充文法<循环语句

4、>::=“for”“(”<赋值语句>“;”<表达式>“;”<语句>“)”Ø扩充函数详见文件夹AssignmentØ运行示例示例代码:programpp;varn,p:integer;procedurep1(n:integer;varp:integer);beginfor(p:=1;p<=5;p:=p+1)begincallwrite(p);endend;begincallread(n);callp1(n,p);callread(n);end.生成中间代码:0JMP0,19------>无条件跳转1JMP0,2------>无条件跳转2ENTP2

5、,5------>进入过程3LOD2,4------>装入变量值4LIT0,1------>装入常量5STO0,0------>将栈顶值存入栈顶次值所指单元6ILOD2,4------>间接装入7LIT0,5------>装入常量8LEQ0,0------><=9JPC0,18------>栈顶值为0时跳转10LOD2,4------>装入变量值11ILOD2,4------>间接装入12LIT0,1------>装入常量13ADD0,0------>加14STO0,0------>将栈顶值存入栈顶次值所指单元15ILOD2,4------>间

6、接装入16WRITE0,0------>写指令17JMP0,6------>无条件跳转18RETP0,0------>过程返回19ENTP1,5------>进入过程20LODA1,3------>装入变量地址21READ0,0------>读指令22OPAC0,0------>打开活动记录23LOD1,3------>装入变量值24LODA1,4------>装入变量地址25CALL1,2------>转子26LODA1,3------>装入变量地址27READ0,0------>读指令28ENDP0,0------>程序结束解释运行结果:2

7、9翻译开始YourOutput:2YourOutput:3YourOutput:4YourOutput:5YourOutput:6翻译结束。1.扩充case语句Ø文法扩充<判断语句>::=“case”<表达式>“of”<表达式>“:”<语句>“;”{<表达式>”:”<语句>”;”}“end”caseEofC1:;C2:;C3:S3;......Cn:SnendØ代码结构T:=E;L1:ifT!=C1gotoL2S1的代码gotonextL2:ifE!=C2gotoL3S2的代码gotonext......Ln:Sn的代码next:Ø运行示例示例

8、代码:programpp;varn,p:integer;procedurep1(n:integer;varp:integer);begincallre

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

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

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