编译原理上机报告 targetblankWord文档下载推荐.docx

上传人:b****2 文档编号:14735260 上传时间:2022-10-24 格式:DOCX 页数:8 大小:16.63KB
下载 相关 举报
编译原理上机报告 targetblankWord文档下载推荐.docx_第1页
第1页 / 共8页
编译原理上机报告 targetblankWord文档下载推荐.docx_第2页
第2页 / 共8页
编译原理上机报告 targetblankWord文档下载推荐.docx_第3页
第3页 / 共8页
编译原理上机报告 targetblankWord文档下载推荐.docx_第4页
第4页 / 共8页
编译原理上机报告 targetblankWord文档下载推荐.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

编译原理上机报告 targetblankWord文档下载推荐.docx

《编译原理上机报告 targetblankWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《编译原理上机报告 targetblankWord文档下载推荐.docx(8页珍藏版)》请在冰豆网上搜索。

编译原理上机报告 targetblankWord文档下载推荐.docx

  为了测试所有可能的代码,我编写了下面的测试PL程序。

这个程序可以编译,但是运行起来是没有意义的,它仅仅是为了包括常量,变量,数组等类型,并且包括比较复杂的表达式处理和几乎所有支持的语句,以便对编译程序进行测试。

  programpp;

  constPI=3testconst='

z'

testconst1=TRUE

  typetesttype=BOOLEANtestarray=array[2..20,0..50]ofboolean

  varn,p:

integercr:

char

  procedurep1(n:

integer;

varp:

integer);

  varin_proc:

charcr1:

testarray

  begin

  cr1(2,3):

=cr1(n,cr1(n,p))+p;

  in_proc:

=2+p*(testconst+1);

  ifn<

=1then

  whiletestconst1don:

=PI

  else

  ifp>

1then

  begin

  p:

=n*p;

  n:

=p/n;

  end;

  callp1(n,cr1(2,5));

  end;

  callread(n);

  callp1(n,p);

  callwrite(p)

  end.

  为了测试运行的情况,我们编写一个稍稍简单的例子,这是参考教材中求阶乘的源程序:

integer

=1thenp:

=1

  else

  callp1(n-1,p);

  p:

=n*p

  end

  

四.编译结果

  采用编译程序对这两个PL源程序进行编译。

  第一个程序的结果如下:

  0ENTP1,9;

进入过程

  1JMP0,83;

无条件跳转

  2ENTP2,978;

  3JMP0,4;

  4LIT0,2;

装入常量

  5LIT0,2;

  6SUB

  7LIT0,19;

  8MULT

  9LIT0,3;

  10ADD

  11LODA2,9;

装入变量地址

  12ADD

  13LOD2,0;

装入变量值

  14LIT0,2;

  15SUB

  16LIT0,19;

  17MULT

  18LOD2,0;

  19LIT0,2;

  20SUB

  21LIT0,19;

  22MULT

  23LOD2,4;

  24ADD

  25LODA2,9;

  26ADD

  27LODT;

装入栈顶值为地址的内容

  28ADD

  29LODA2,9;

  30ADD

  31LODT;

  32LOD2,4;

  33ADD

  34STO;

将栈顶值存入栈顶次值所指单元

  35LODA2,8;

  36LIT0,2;

  37LOD2,4;

  38LIT0,122;

  39LIT0,1;

  40ADD

  41MULT

  42ADD

  43STO;

  44LOD2,0;

  45LIT0,1;

  46LEQ;

<

=

  47JPC0,55;

栈顶值为0时跳转

  48LIT0,1;

  49JPC0,54;

  50LODA2,0;

  51LIT0,3;

  52STO;

  53JMP0,48;

  54JMP0,69;

  55LOD2,4;

  56LIT0,1;

  57GTR;

>

  58JPC0,69;

  59LODA2,4;

  60LOD2,0;

  61LOD2,4;

  62MULT

  63STO;

  64LODA2,0;

  65LOD2,4;

  66LOD2,0;

  67IDIV

  68STO;

  69OPAC;

打开活动记录

  70LOD2,0;

  71LIT0,2;

  72LIT0,2;

  73SUB

  74LIT0,19;

  75MULT

  76LIT0,5;

  77ADD

  78LODA2,9;

  79ADD

  80CALL1,2;

转子

  81UDIS1,2;

调整Display

  82RETP;

过程返回

  83LODA1,0;

  84READ0,0;

读指令

  85OPAC;

  86LOD1,0;

  87LODA1,4;

  88CALL1,2;

  89LODA1,4;

  90WRITE0,0;

写指令

  91ENDP;

程序结束

  第二个程序编译结果:

  0ENTP1,8;

  1JMP0,25;

  2ENTP2,9;

  4LOD2,0;

  5LIT0,1;

  6LEQ;

  7JPC0,12;

  8LOD2,4;

  9LIT0,1;

  10STO;

  11JMP0,24;

  12OPAC;

  14LIT0,1;

  16LOD2,4;

  17CALL1,2;

  18UDIS1,2;

  19LOD2,4;

  20LOD2,0;

  21ILOD2,4;

间接装入

  23STO;

  24RETP;

  25LODA1,0;

  26READ0,0;

  27OPAC;

  28LOD1,0;

  29LODA1,4;

  30CALL1,2;

  31LODA1,4;

  32WRITE0,0;

  33ENDP;

五.运行结果:

我们用interpret.exe执行生成的obj文件,结果如下所示:

Input:

5

120

5!

=120,说明程序运行完全正确。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1