September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang...

12
June 18, 2022 1 June 18, 2022 June 18, 2022 Azusa, Azusa, CA CA Sheldon X. Liang Ph. D. Computer Science at Computer Science at Azusa Azusa Pacific University Pacific University Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/ CS400 Compiler Construction CS400 Compiler Construction

Transcript of September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang...

Page 1: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

April 19, 20231

April 19, 2023April 19, 2023 Azusa, CAAzusa, CA

Sheldon X. Liang Ph. D.

Computer Science at Computer Science at Azusa Pacific UniversityAzusa Pacific University

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS400 Compiler ConstructionCS400 Compiler Construction

Page 2: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• Be able to build a compiler for a (simplified) (programming) language

• Know how to use compiler construction tools, such as generators of scanners and parsers

• Be familiar with virtual machines, such as the JVM and Java bytecode

• Be able to define LL(1), LR(1), and LALR(1) grammars• Be familiar with compiler analysis and optimization

techniques• … learn how to work on a larger software project!

April 19, 20232

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

Objectives Objectives

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 3: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• “Compilation”– Translation of a program written in a source language

into a semantically equivalent program written in a target language

Compiler

Error messages

SourceProgram

TargetProgram

Input

OutputApril 19, 2023

3Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

Compilers and InterpretersCompilers and Interpreters

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 4: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

Interpreter

SourceProgram

Input

Output

Error messages

• “Interpretation”– Performing the operations implied by the source

program

April 19, 20234

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Compilers and InterpretersCompilers and Interpreters

Page 5: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• There are two parts to compilation:– Analysis determines the operations implied by

the source program which are recorded in a tree structure

– Synthesis takes the tree structure and translates the operations therein into the target program

April 19, 20235

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

The Analysis-Synthesis Model of CompilationThe Analysis-Synthesis Model of Compilation

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 6: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• Editors (syntax highlighting)

• Pretty printers (e.g. Doxygen)

• Static checkers (e.g. Lint and Splint)

• Interpreters

• Text formatters (e.g. TeX and LaTeX)

• Silicon compilers (e.g. VHDL)

• Query interpreters/compilers (Databases)April 19, 2023

6Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Other Tools that Use Analysis-Synthesis ModelOther Tools that Use Analysis-Synthesis Model

Page 7: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

Preprocessor

Compiler

Assembler

Linker

Skeletal Source Program

Source Program

Target Assembly Program

Relocatable Object Code

Absolute Machine Code

Libraries andRelocatable Object Files

Try for example:gcc -v myprog.c

April 19, 20237

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

Preprocessors, Compilers, Assemblers, and LinkersPreprocessors, Compilers, Assemblers, and Linkers

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 8: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

Phase Output Sample

Programmer (source code producer) Source string A=B+C;

Scanner (performs lexical analysis) Token string ‘A’, ‘=’, ‘B’, ‘+’, ‘C’, ‘;’And symbol table with names

Parser (performs syntax analysis based on the grammar of the programming language)

Parse tree or abstract syntax tree ; | = / \A + / \ B C

Semantic analyzer (type checking, etc)

Annotated parse tree or abstract syntax tree

Intermediate code generator Three-address code, quads, or RTL

int2fp B t1+ t1 C t2:= t2 A

Optimizer Three-address code, quads, or RTL

int2fp B t1+ t1 #2.3 A

Code generator Assembly code MOVF #2.3,r1ADDF2 r1,r2MOVF r2,A

Peephole optimizer Assembly code ADDF2 #2.3,r2MOVF r2,A

The Phases of a CompilerThe Phases of a Compiler

Page 9: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• Compiler front and back ends:– Front end: analysis (machine independent)

– Back end: synthesis (machine dependent)

• Compiler passes:– A collection of phases is done only once (single pass)

or multiple times (multi pass)• Single pass: usually requires everything to be defined before

being used in source program

• Multi pass: compiler may have to keep entire program representation in memory

April 19, 20239

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

The Grouping of PhasesThe Grouping of Phases

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 10: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• Software development tools are available to implement one or more compiler phases– Scanner generators– Parser generators– Syntax-directed translation engines– Automatic code generators– Data-flow engines

April 19, 202310

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

Compiler-Construction ToolsCompiler-Construction Tools

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 11: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

• Ch. 1: Introduction

Walkthrough: a Miniature Compiler• Ch. 2: A simple One-Pass Compiler for the JVM

Technology: Analysis and Methods• Ch. 3: Lexical Analysis and Lex/Flex• Ch. 4: Syntax Analysis and Yacc/Bison

Front-end: Intermediate Code Generation• Ch. 5: Syntax-Directed Definition and Translation• Ch. 6: Intermediate Code Generation

Back-end: Object Code Generation• Ch. 8: Code Generation

Advanced topics: Runtime and Parallelism Env.• Ch. 7: Run-Time Environments• Ch.11: Optimization for parallelism

April 19, 202311

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

OutlineOutline

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Page 12: September 7, 2015 1 September 7, 2015September 7, 2015September 7, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University.

Thank you very much!

Questions?

April 19, 202312

Azusa Pacific University, Azusa, CA 91702, Tel: (800) 825-5278 Department of Computer Science, http://www.apu.edu/clas/computerscience/

CS@APU: CS400 Compiler ConstructionCS@APU: CS400 Compiler Construction

Introduction to CompilerIntroduction to Compiler