内容目录
编译原理lab6
1. 有以下PL/0程序作为编译输入文件,请使用PL/0完整编译器执行得到输出的类p-code代码,附上执行输出截图,仔细阅读并结合课程相关资料理解含义
onst a=27,b=80;
var x,y,z;
procedure p;
var f;
begin
f:=(a+b)/3;
end;
begin
x:=3; call p;
end.
执行得到输出的类p-code代码如下:
0 jmp 0 10
1 jmp 0 2
2 int 0 4
3 lit 0 27
4 lit 0 80
5 opr 0 2
6 lit 0 3
7 opr 0 5
8 sto 0 3
9 opr 0 0
10 int 0 6
11 lit 0 3
12 sto 0 3
13 cal 0 2
14 opr 0 0
执行输出截图如下:

2. 有以下PL/0程序作为编译输入文件,请使用PL/0完整编译器执行得到输出的类p-code代码,附上执行输出截图,仔细阅读并结合课程相关资料理解含义
const a=84,b=36;
var x,y,z,q,r;
procedure gcd;
var f,g;
begin
f:=x; g:=y;
while f#g do
begin
if f<g then g:=g-f;
if g<f then f:=f-g;
end;
z:=f;
end;
begin
x:=a; y:=b; call gcd
end.
执行得到输出的类p-code代码如下:
0 jmp 0 31
1 jmp 0 2
2 int 0 5
3 lod 1 3
4 sto 0 3
5 lod 1 4
6 sto 0 4
7 lod 0 3
8 lod 0 4
9 opr 0 9
10 jpc 0 28
11 lod 0 3
12 lod 0 4
13 opr 0 10
14 jpc 0 19
15 lod 0 4
16 lod 0 3
17 opr 0 3
18 sto 0 4
19 lod 0 4
20 lod 0 3
21 opr 0 10
22 jpc 0 27
23 lod 0 3
24 lod 0 4
25 opr 0 3
26 sto 0 3
27 jmp 0 7
28 lod 0 3
29 sto 1 5
30 opr 0 0
31 int 0 8
32 lit 0 84
33 sto 0 3
34 lit 0 36
35 sto 0 4
36 cal 0 2
37 opr 0 0
执行输出截图如下:

代码链接
https://gitee.com/WilliamSamShen/complier-concepts/tree/master/Lab/lab6