Recitation 2 PL0 Code Execution COP 3402 Spr

  • Slides: 10
Download presentation
Recitation 2 PL/0 Code Execution COP 3402 (Spr 2010)

Recitation 2 PL/0 Code Execution COP 3402 (Spr 2010)

Nested Code procedure A; var y; procedure B; var x; procedure C; begin x:

Nested Code procedure A; var y; procedure B; var x; procedure C; begin x: =y; end; begin x: =1; y: = 3; call C; end; begin y: = 2; call B; end; call A.

Running Nested on PM/0 Initial values pc 0 bp sp 1 0 0 jmp

Running Nested on PM/0 Initial values pc 0 bp sp 1 0 0 jmp 20 inc 21 cal 15 inc 16 lit 17 sto 18 cal 8 inc 9 lit 10 sto 11 lit 12 sto 13 cal 4 inc 5 lod 20 21 15 16 17 18 8 9 10 11 12 13 4 5 6 1 1 4 4 8 8 8 12 12 12 0, 20 0, 3 0, 15 0, 4 0, 2 0, 3 0, 8 0, 4 0, 1 0, 3 1, 3 0, 4 0, 3 2, 3 0 3 3 7 8 7 7 11 12 11 11 14 15 stack 000 code 0 jmp 0 20 1 jmp 0 15 2 jmp 0 8 000 3 jmp 0 4 000 4 inc 0 3 0 0 0|1 1 22 5 lod 2 3 0 0 0| 1 1 22 0 6 sto 1 3 0 0 0| 1 1 22 0 2 7 opr 0 0 0| 1 1 22 2 8 inc 0 4 0 0 0| 1 1 22 2| 4 4 19 9 lit 0 1 0 0 0| 1 1 22 2| 4 4 19 0 10 sto 0 3 0 0 0| 1 1 22 2| 4 4 19 0 1 11 lit 0 3 0 0 0| 1 1 22 2| 4 4 19 1 12 sto 1 3 0 0 0| 1 1 22 2| 4 4 19 1 3 13 cal 0 4 0 0 0| 1 1 22 3| 4 4 19 1| 8 8 14 14 opr 0 0 0| 1 1 22 3| 4 4 19 1| 8 8 14 15 inc 0 4 0 0 0| 1 1 22 3| 4 4 19 1| 8 8 14 3 16 lit 0 2

Running Nested on PM/0 6 sto 7 opr 14 opr 19 opr 22 opr

Running Nested on PM/0 6 sto 7 opr 14 opr 19 opr 22 opr 1, 3 0, 0 pc 7 14 19 22 0 bp 12 8 4 1 0 sp 14 11 7 3 0 stack 0 0 0| 1 1 22 3| 4 4 19 3| 8 8 14 0 0 0 | 1 1 22 3| 4 4 19 3 0 0 0| 1 1 22 3 000 code 17 sto 03 18 cal 0 8 19 opr 0 0 20 inc 0 3 21 cal 0 15 22 opr 0 0

Factorial Code var f, n; procedure fact; var ans 1; begin ans 1: =n;

Factorial Code var f, n; procedure fact; var ans 1; begin ans 1: =n; n: = n-1; if n = 0 then f : = 1; if n > 0 then call fact; f: =f * ans 1; end; begin n: =3; call fact; write(f); end.

Running Factorial on PM/0 Initial values pc 0 bp sp 1 0 stack 000

Running Factorial on PM/0 Initial values pc 0 bp sp 1 0 stack 000 0 jmp 0, 25 25 inc 0, 5 26 lit 0, 3 27 sto 0, 4 28 cal 0, 2 2 inc 0, 4 3 lod 1, 4 4 sto 0, 3 5 lod 1, 4 6 lit 0, 1 7 opr 0, 3 8 sto 1, 4 9 lod 1, 4 10 lit 0, 0 11 opr 0, 8 25 26 27 28 2 3 4 5 6 7 8 9 10 11 12 1 1 6 6 6 000003 0 0 0 0 3| 1 1 29 0 3 0 0 0 0 3| 1 1 29 3 3 1 0 0 3| 1 1 29 3 2 0 0 0 0 2| 1 1 29 3 2 0 0 0 2| 1 1 29 3 0 0 5 6 5 5 9 10 11 10 code 0 jmp 0 25 1 jmp 0 2 2 inc 0 4 3 lod 1 4 4 sto 0 3 5 lod 1 4 6 lit 0 1 7 opr 0 3 8 sto 1 4 9 lod 1 4 10 lit 0 0 11 opr 0 8 12 jpc 0 15 13 lit 0 1 14 sto 1 3 15 lod 1 4 16 lit 0 0

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack 000 12 jpc 0, 15 15 lod 1, 4 16 lit 0, 0 17 opr 0, 12 18 jpc 0, 20 19 cal 1, 2 2 inc 0, 4 3 lod 1, 4 4 sto 0, 3 5 lod 1, 4 6 lit 0, 1 7 opr 0, 3 8 sto 1, 4 9 lod 1, 4 10 lit 0, 0 15 16 17 18 19 2 3 4 5 6 7 8 9 10 11 6 6 6 10 10 10 0 0 0 0 2| 1 1 29 3 2 0 0 0 2| 1 1 29 3 1 0 0 0 0 2| 1 1 29 3| 1 6 20 0 2 0 0 0 0 2| 1 1 29 3| 1 6 20 2 2 1 0 0 2| 1 1 29 3| 1 6 20 2 1 0 0 0 0 1| 1 1 29 3| 1 6 20 2 1 0 9 10 11 10 9 9 13 14 15 14 13 14 15 code 17 opr 0 12 18 jpc 0 20 19 cal 1 2 20 lod 1 3 21 lod 0 3 22 opr 0 4 23 sto 1 3 24 opr 0 0 25 inc 0 5 26 lit 0 3 27 sto 0 4 28 cal 0 2 29 lod 0 3 30 wrt 0 0 31 opr 0 0

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack 000 11 opr 0, 8 12 jpc 0, 15 15 lod 1, 4 16 lit 0, 0 17 opr 0, 12 18 jpc 0, 20 19 cal 1, 2 2 inc 0, 4 3 lod 1, 4 4 sto 0, 3 5 lod 1, 4 6 lit 0, 1 7 opr 0, 3 8 sto 1, 4 9 lod 1, 4 12 15 16 17 18 19 2 3 4 5 6 7 8 9 10 10 14 14 14 0 0 0 0 1| 1 1 29 3| 1 6 20 2 1 0 0 0 1| 1 1 29 3| 1 6 20 2 1 0 0 0 0 1| 1 1 29 3| 1 6 20 2| 1 10 20 0 1 0 0 0 0 1| 1 1 29 3| 1 6 20 2| 1 10 20 1 0 0 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 0 14 13 14 15 14 13 13 17 18 19 18 17 18

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack

Running a program on PM/0 Initial values pc 0 bp sp 1 0 stack 000 10 lit 0, 0 11 opr 0, 8 12 jpc 0, 15 13 lit 0, 1 14 sto 1, 3 15 lod 1, 4 16 lit 0, 0 17 opr 0, 12 18 jpc 0, 20 20 lod 1, 3 21 lod 0, 3 22 opr 0, 4 23 sto 1, 3 24 opr 0, 0 20 lod 1, 3 11 12 13 14 15 16 17 18 20 21 22 23 24 20 21 14 14 14 14 10 10 0 0 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 1 0 0 0 0 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 1 0 0 0 1 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 0 0 0 0 1 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 1 0 0 0 1 0| 1 1 29 3| 1 6 20 2| 1 10 20 1 0 0 0 1 0| 1 1 29 3| 1 6 20 2 1 19 18 17 18 19 18 17 13 14

Running a program on PM/0 Initial values pc 0 bp sp 1 0 21

Running a program on PM/0 Initial values pc 0 bp sp 1 0 21 lod 0, 3 22 opr 0, 4 23 sto 1, 3 24 opr 0, 0 20 lod 1, 3 21 lod 0, 3 22 opr 0, 4 23 sto 1, 3 24 opr 0, 0 29 lod 0, 3 30 wrt 0, 0 31 opr 0, 0 22 10 15 23 10 14 24 10 13 20 6 9 21 6 10 22 6 11 23 6 10 24 6 9 29 1 5 30 1 6 31 1 5 0 0 0 stack 000 0 1 0| 1 1 29 3| 1 6 20 2 1 2 0 0 0 1 0| 1 1 29 3| 1 6 20 2 2 0 0 0 2 0| 1 1 29 3| 1 6 20 2 0 0 0 2 0| 1 1 29 3 2 3 0 0 0 2 0| 1 1 29 3 6 0 0 0 6 0| 1 1 29 3 000606 00060