Slide 1

Slide 1 text

jgs Compilers Lecture 22: Intermediate Code II Dr. Javier Gonzalez-Sanchez [email protected]

Slide 2

Slide 2 text

jgs Previously …

Slide 3

Slide 3 text

Dr. Javier Gonzalez-Sanchez | Compilers | 3 jgs High-Level Languages X,E,G,O,O #e1,I,I,0,7 @ OPR 19, AX STO x, AX LIT 5, AX OPR 21, AX LOD #e1,AX CAL 1, AX OPR 0, AX 5 Virtual Machine (interpreter) // sorce code int x; int foo () { read (x); print (5); } main () { foo (); } Lexer Parser Semantic Analyzer Code Generation 01001010101000010 01010100101010010 10100100000011011 11010010110101111 00010010101010010 10101001010101011 Assembler compilation execution

Slide 4

Slide 4 text

Dr. Javier Gonzalez-Sanchez | Compilers | 4 jgs Translate Source to Object { int a; int b; int c; int d; if (a != 5) { b = c + d; } print (a); } a,int,global 0 b,int,global 0 c,int,global 0 d,int,global 0 #E1,int,label,9 #P,int,label,1 @ lod , 0 lit 5, 0 opr 14, 0 jmc #e1, false lod c, 0 lod d, 0 opr 2, 0 sto b, 0 lod a, 0 opr 21, 0 opr 1, 0

Slide 5

Slide 5 text

Dr. Javier Gonzalez-Sanchez | Compilers | 5 jgs A Simple Virtual Machine CPU ALU Register PC Memory program Code sto 0, s sto 0, d sto 0, c sto 0, d lod s, 0 lit “s”, 0 opr 14, 0 jmc #a1, false lod b, 0 Symbol Table

Slide 6

Slide 6 text

jgs Let’s Review

Slide 7

Slide 7 text

Dr. Javier Gonzalez-Sanchez | Compilers | 7 jgs Code Generation * 1 2 * 4 5 + 3 > 1 * 2 > 3 + 4 * 5 LIT 1, 0 LIT 2, 0 OPR 4, 0 LIT 3, 0 LIT 4, 0 LIT 5, 0 OPR 4, 0 OPR 2, 0 OPR 11, 0

Slide 8

Slide 8 text

Dr. Javier Gonzalez-Sanchez | Compilers | 8 jgs Review a, int, global, 0 b, int, global, 0 @ LIT 5, 0 STO a, 0 LIT 9, 0 STO b, 0 LOD a, 0 LOD b, 0 LIT 3, 0 OPR 4, 0 OPR 2, 0 STO a, 0 LOD a, 0 OPR 21,0 LIT "hello", 0 OPR 21,0 OPR 1, 0 OPR 0,0 Virtual Machine (interpreter) { int a; int b; a = 5; b = 9; a = a + b / 3; print (a); print ("hello"); } Lexer Parser Semantic Analyzer Code Generation 8 hello

Slide 9

Slide 9 text

Dr. Javier Gonzalez-Sanchez | Compilers | 9 jgs Review { int a; int b; boolean foo; a = 10 + 20 + 30 + 40; print (a); foo = 340 > 126; print (foo); a = a / 2; print ("total:" + a); return; } Lexer Parser Semantic Analyzer Code Generation

Slide 10

Slide 10 text

Dr. Javier Gonzalez-Sanchez | Compilers | 10 jgs Review Virtual Machine (interpreter) 100 true total: 50

Slide 11

Slide 11 text

jgs What’s next?

Slide 12

Slide 12 text

Dr. Javier Gonzalez-Sanchez | Compilers | 12 jgs Your Code Should be

Slide 13

Slide 13 text

Dr. Javier Gonzalez-Sanchez | Compilers | 13 jgs

Slide 14

Slide 14 text

Dr. Javier Gonzalez-Sanchez | Compilers | 14 jgs Assignment #4 | Compiler

Slide 15

Slide 15 text

Dr. Javier Gonzalez-Sanchez | Compilers | 15 jgs Assignment #4 | Compiler Bonus Points

Slide 16

Slide 16 text

Dr. Javier Gonzalez-Sanchez | Compilers | 16 jgs Assignment #4 | VM Use it to test your compiler. No changes required

Slide 17

Slide 17 text

Dr. Javier Gonzalez-Sanchez | Compilers | 17 jgs Implementing Intermediate Code Generation

Slide 18

Slide 18 text

Dr. Javier Gonzalez-Sanchez | Compilers | 18 jgs Review Programming Assignment 4 Level 1 LIT, LOD, STO, OPR

Slide 19

Slide 19 text

Dr. Javier Gonzalez-Sanchez | Compilers | 19 jgs Code PROGRAM

Slide 20

Slide 20 text

Dr. Javier Gonzalez-Sanchez | Compilers | 20 jgs Code PROGRAM OPR 0, 0

Slide 21

Slide 21 text

Dr. Javier Gonzalez-Sanchez | Compilers | 21 jgs Code BODY

Slide 22

Slide 22 text

Dr. Javier Gonzalez-Sanchez | Compilers | 22 jgs Code BODY

Slide 23

Slide 23 text

Dr. Javier Gonzalez-Sanchez | Compilers | 23 jgs Code PRINT

Slide 24

Slide 24 text

Dr. Javier Gonzalez-Sanchez | Compilers | 24 jgs Code PRINT OPR 21, 0

Slide 25

Slide 25 text

Dr. Javier Gonzalez-Sanchez | Compilers | 25 jgs Code ASSIGNMENT

Slide 26

Slide 26 text

Dr. Javier Gonzalez-Sanchez | Compilers | 26 jgs Code ASSIGNMENT STO identifier, 0

Slide 27

Slide 27 text

Dr. Javier Gonzalez-Sanchez | Compilers | 27 jgs Code VARIABLE

Slide 28

Slide 28 text

Dr. Javier Gonzalez-Sanchez | Compilers | 28 jgs Code VARIABLE identifier,

Slide 29

Slide 29 text

Dr. Javier Gonzalez-Sanchez | Compilers | 29 jgs Code RETURN

Slide 30

Slide 30 text

Dr. Javier Gonzalez-Sanchez | Compilers | 30 jgs Code RETURN OPR 1, 0

Slide 31

Slide 31 text

Dr. Javier Gonzalez-Sanchez | Compilers | 31 jgs Code EXPRESSION

Slide 32

Slide 32 text

Dr. Javier Gonzalez-Sanchez | Compilers | 32 jgs Parser EXPRESSION if (twice) { OPR 8, 0 }

Slide 33

Slide 33 text

Dr. Javier Gonzalez-Sanchez | Compilers | 33 jgs Code X

Slide 34

Slide 34 text

Dr. Javier Gonzalez-Sanchez | Compilers | 34 jgs Parser X if (twice) { OPR 9, 0 }

Slide 35

Slide 35 text

Dr. Javier Gonzalez-Sanchez | Compilers | 35 jgs Code Y

Slide 36

Slide 36 text

Dr. Javier Gonzalez-Sanchez | Compilers | 36 jgs Parser Y if (operatorUsed) { OPR 10, 0 }

Slide 37

Slide 37 text

Dr. Javier Gonzalez-Sanchez | Compilers | 37 jgs Code R

Slide 38

Slide 38 text

Dr. Javier Gonzalez-Sanchez | Compilers | 38 jgs Parser R if (twice) { OPR , 0 }

Slide 39

Slide 39 text

Dr. Javier Gonzalez-Sanchez | Compilers | 39 jgs Code E

Slide 40

Slide 40 text

Dr. Javier Gonzalez-Sanchez | Compilers | 40 jgs Parser E if (twice) { OPR , 0 }

Slide 41

Slide 41 text

Dr. Javier Gonzalez-Sanchez | Compilers | 41 jgs Code A

Slide 42

Slide 42 text

Dr. Javier Gonzalez-Sanchez | Compilers | 42 jgs Parser A if (twice) { OPR , 0 }

Slide 43

Slide 43 text

Dr. Javier Gonzalez-Sanchez | Compilers | 43 jgs Code B

Slide 44

Slide 44 text

Dr. Javier Gonzalez-Sanchez | Compilers | 44 jgs Parser B if (operatorUsed) { OPR 3, 0 } LIT 0, 0

Slide 45

Slide 45 text

Dr. Javier Gonzalez-Sanchez | Compilers | 45 jgs Code C

Slide 46

Slide 46 text

Dr. Javier Gonzalez-Sanchez | Compilers | 46 jgs Assignment 2 | Code C LIT , 0 LOD identifier, 0

Slide 47

Slide 47 text

Dr. Javier Gonzalez-Sanchez | Compilers | 47 jgs Review Programming Assignment 4 Level 2 JMP, JMC

Slide 48

Slide 48 text

jgs To be continued …

Slide 49

Slide 49 text

Dr. Javier Gonzalez-Sanchez | Compilers | 49 jgs Questions

Slide 50

Slide 50 text

jgs Compilers Javier Gonzalez-Sanchez, Ph.D. [email protected] Spring 2024 Copyright. These slides can only be used as study material for the Compilers course at Universidad Panamericana. They cannot be distributed or used for another purpose.