Lecture 2 PL0 Code Execution COP 3402 Spring

  • Slides: 10
Download presentation
Lecture 2 PL/0 Code Execution COP 3402 (Spring 2008)

Lecture 2 PL/0 Code Execution COP 3402 (Spring 2008)

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 21 lod 22 opr 23

Running a program on PM/0 Initial values pc 0 21 lod 22 opr 23 sto 24 opr 20 lod 21 lod 22 opr 23 sto 24 opr 29 lod 30 wrt 31 opr 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, 3 0, 4 1, 3 0, 0 1, 3 0, 4 1, 3 0, 0 bp sp 1 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