电子科技大学计算机学院2014-2015-2-编译实验.pptVIP

  • 5
  • 0
  • 约5.52千字
  • 约 44页
  • 2017-08-19 发布于北京
  • 举报

电子科技大学计算机学院2014-2015-2-编译实验.ppt

procedure E’; if lookahead=‘+’ then begin match(‘+’); T; E’ end; procedure T’; if lookahead=‘*’ then begin match(‘*’); F; T’ end; 8. 进行自上而下语法制导翻译时, 各过程返回的是指针。 五. 实验要求 1. 至少完成词法、语法。 2. 提交: 实验报告 (1) 源程序、测试程序、运行结果 (2) 设计思想、总控算法、主要服务子程序算法、总结(心得、收获、建议等)。 测试程序 begin integer k; integer function F(n); begin integer n; if n=0 then F:=1 else F:=n*F(n-1) end; read(m); k:=F(m); write(k) end 算符与整数码对照表1 算府 整数码 算符 整数码 算符 整数码 一元负 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + - * / DIV MOD AND 或 非 = = = 赋值 无条件转移 JNZ(真转移) 过程调用 参数个数 程序结束 JZ(假转移) 参数传递 算符与整数码对照表2 算府 整数码 算符 整数码 算符 整数码 参数返回 24 25 26 27 28 29 30 31 32 参数 过程返回 READ READLN WRITE WRITELN 变址存数 变址取数 其中:22,26无操作数;0,9,17,20,21,23,27,28,29只有一个操作数; 16,18,19有两个操作数;1,2,3,4,5,6,7,8,10,11,12,13,14,15,24,25,31, 32有三个操作数。 目标代码(P码)指令表1 编码 助记符 操 作 码 参 数 T P Q 功 能 说 明 T-类型,P-层次号,Q-栈内位移 根据P,Q形成栈地址,将其栈内单元的 值装载到栈顶单元 0 LOD T-栈单元类型, P-层次号, Q-栈内位移 以P,Q形成的栈地址单元的内容作为地址, 间接取栈单元的值装载到栈顶 T-类型,P-层次号,Q-栈内位移 直接存取栈顶单元内容到P,Q指定的栈单元中 间接存取栈顶单元的内容,以P,Q形成的栈 地址单元为间址单元 1 LDO 2 STR STO 3 目标代码(P码)指令表2 编码 助记符 操 作 码 参 数 T P Q 功 能 说 明 将类型为T,值为Q的常数装载到栈顶单元 4 LDC 对栈顶单元中的整型数取负 对栈顶单元中的实型数取负 栈顶两单元整型数加操作 5 NGI 6 NGR ADI 7 8 ADR 栈顶两单元实型数加操作 9 SBI 栈顶两单元整型数减操作 目标代码(P码)指令表3 编码 助记符 操 作 码 参 数 T P Q 功 能 说 明 栈顶两单元实型数减操作 10 SBR 栈顶两单元整型数乘操作 栈顶两单元实型数乘操作 栈顶两单元整型数除操作 11 MPI 12 MPR DVR 13 14 DVI 栈顶两单元实型数除操作 15 MOD 栈顶两单元整型数取余操作 目标代码(P码)指令表4 编码 助记符 操 作 码 参 数 T P Q 功 能 说 明 与操作 16 AND 或操作 非操作 大于比较 17 OR 18 NOT GRT 19 20 GEQ 大于等于比较 21 LES 小于比较 目标代码(P码)指令表5 编码 助记符 操 作 码 参 数 T P Q 功 能 说 明 小于等于比较 22 LEQ 不等于比较 等于比较 条件成立转移。若栈顶单元的布尔值为真, 则转移至Q表示的目标指令序号执行 23 NEQ 24 EQ TJP 25 26 FJP 假转移。若栈顶单元的布尔值为假,则转移 至Q表示的目标指令序号执行 2

文档评论(0)

1亿VIP精品文档

相关文档