Chapter 1: Introduction to Compiling - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Chapter 1: Introduction to Compiling

Description:

As a Discipline, Involves Multiple CS&E Areas. Programming Languages and ... Blanks, Line breaks, etc. are scanned out. Position := initial rate * 60 ; CH1.11 ... – PowerPoint PPT presentation

Number of Views:169
Avg rating:3.0/5.0
Slides: 29
Provided by: aggelos2
Category:

less

Transcript and Presenter's Notes

Title: Chapter 1: Introduction to Compiling


1
Chapter 1 Introduction to Compiling
Aggelos Kiayias Computer Science Engineering
Department The University of Connecticut 371
Fairfield Road, Box U-2155 Storrs, CT 06269-2155
aggelos_at_cse.uconn.edu http//www.cse.uconn.edu/ak
iayias
Additional Notes Credits Steven A.
Demurjian CSE, UCONN Robert LaBarre United
Technologies Research Center
2
Introduction to Compilers
  • As a Discipline, Involves Multiple CSE Areas
  • Programming Languages and Algorithms
  • Theory of Computing Software Engineering
  • Computer Architecture Operating Systems
  • Has Deceivingly Simplistic Intent

3
Classifications of Compilers
  • Compilers Viewed from Many Perspectives
  • However, All utilize same basic tasks to
    accomplish their actions

Single Pass Multiple Pass Load Go
Construction
Debugging Optimizing
Functional
4
The Model
  • The TWO Fundamental Parts
  • We Will Discuss Both in This Class, andFOCUS on
    analysis.

Analysis
Decompose Source into an intermediate
representation
Synthesis
Target program generation from representation
5
Important Notes
  • Today There are many Software Tools for helping
    with the Analysis Part. This Wasnt the Case in
    Early Days. (some) analysis is also important in
  • Structure / Syntax directed editors Force
    syntactically correct code to be entered
  • Pretty Printers Standardized version for
    program structure (i.e., blank space, indenting,
    etc.)
  • Static Checkers A quick compilation to detect
    rudimentary errors
  • Interpreters real time execution of code a
    line-at-a-time

6
Important Notes
  • Compilation Is Not Limited to Programming
    Language Applications
  • Text Formatters
  • LATEX TROFF Are Languages Whose Commands
    Format Text
  • Silicon Compilers
  • Textual / Graphical Take Input and Generate
    Circuit Design
  • Database Query Processors
  • Database Query Languages Are Also a Programming
    Language
  • Input is compiled Into a Set of Operations for
    Accessing the Database

7
The Many Phases of a Compiler
1, 2, 3 Analysis - Our Focus 4, 5, 6
Synthesis
8
Language-Processing System
Source Program
Executable
9
The Analysis Task For Compilation
  • Three Phases
  • Linear / Lexical Analysis
  • L-to-r Scan to Identify Tokenstoken sequence
    of chars having a collective meaning
  • Hierarchical Analysis
  • Grouping of Tokens Into Meaningful Collection
  • Semantic Analysis
  • Checking to ensure Correctness of Components

10
Phase 1. Lexical Analysis
Easiest Analysis - Identify tokens which are the
basic building blocks
For Example
Position initial rate 60
_______ __ _____ _ ___ _ __ _
Blanks, Line breaks, etc. are scanned out
11
Phase 2. Hierarchical Analysisaka Parsing or
Syntax Analysis
For previous example, we would have Parse Tree
Nodes of tree are constructed using a grammar for
the language
12
What is a Grammar?
  • Grammar is a Set of Rules Which Govern the
    Interdependencies Structure Among the Tokens

statement
is an
assignment statement, or while statement, or if
statement, or ...
assignment statement
is an
identifier expression
expression
is an
(expression), or expression expression, or
expression expression, or number, or
identifier, or ...
13
Why Have We Divided Analysis in This Manner?
  • Lexical Analysis - Scans Input, Its Linear
    Actions Are Not Recursive
  • Identify Only Individual words that are the the
    Tokens of the Language
  • Recursion Is Required to Identify Structure of an
    Expression, As Indicated in Parse Tree
  • Verify that the words are Correctly Assembled
    into sentences
  • What is Third Phase?
  • Determine Whether the Sentences have One and Only
    One Unambiguous Interpretation
  • and do something about it!
  • e.g. John Took Picture of Mary Out on the Patio

14
Phase 3. Semantic Analysis
  • Find More Complicated Semantic Errors and Support
    Code Generation
  • Parse Tree Is Augmented With Semantic Actions

Compressed Tree
Conversion Action
15
Phase 3. Semantic Analysis
  • Most Important Activity in This Phase
  • Type Checking - Legality of Operands
  • Many Different Situations

Real int char Aint Areal int
while char ltgt int do . Etc.
16
Supporting Phases/ Activities for Analysis
  • Symbol Table Creation / Maintenance
  • Contains Info (storage, type, scope, args) on
    Each Meaningful Token, Typically Identifiers
  • Data Structure Created / Initialized During
    Lexical Analysis
  • Utilized / Updated During Later Analysis
    Synthesis
  • Error Handling
  • Detection of Different Errors Which Correspond to
    All Phases
  • What Kinds of Errors Are Found During the
    Analysis Phase?
  • What Happens When an Error Is Found?

17
The Many Phases of a Compiler
1, 2, 3 Analysis - Our Focus 4, 5, 6
Synthesis
18
The Synthesis Task For Compilation
  • Intermediate Code Generation
  • Abstract Machine Version of Code - Independent of
    Architecture
  • Easy to Produce and Do Final, Machine Dependent
    Code Generation
  • Code Optimization
  • Find More Efficient Ways to Execute Code
  • Replace Code With More Optimal Statements
  • 2-approaches High-level Language Peephole
    Optimization
  • Final Code Generation
  • Generate Relocatable Machine Dependent Code

19
Reviewing the Entire Process
position initial rate 60
id1 id2 id3 60
Errors
Symbol Table
position .... initial . rate.
20
Reviewing the Entire Process
Errors
Symbol Table
position .... initial . rate.
temp1 inttoreal(60) temp2 id3 temp1 temp3
id2 temp2 id1 temp3
3 address code
temp1 id3 60.0 id1 id2 temp1
MOVF id3, R2 MULF 60.0, R2 MOVF id2, R1 ADDF R1,
R2 MOVF R1, id1
21
Assemblers
  • Assembly code names are used for instructions,
    and names are used for memory addresses.
  • Two-pass Assembly
  • First Pass all identifiers are assigned to
    memory addresses (0-offset)e.g. substitute 0 for
    a, and 4 for b
  • Second Pass produce relocatable machine code

MOV a, R1 ADD 2, R1 MOV R1, b
0001 01 00 00000000 0011 01 10 00000010 0010 01
00 00000100
relocation bit
22
Loaders and Link-Editors
  • Loader taking relocatable machine code, altering
    the addresses and placing the altered
    instructionsinto memory.
  • Link-editor taking many (relocatable) machine
    code programs (with cross-references) and produce
    a single file.
  • Need to keep track of correspondence between
    variable names and corresponding addresses in
    each piece of code.

23
Compiler Cousins Preprocessors Provide Input to
Compilers
1. Macro Processing
define in C does text substitution before
compiling
define X 3 define Y ABC define Z
getchar()
24
2. File Inclusion
include in C - bring in another file before
compiling
25
3. Rational Preprocessors
  • Augment Old Languages With Modern Constructs
  • Add Macros for If - Then, While, Etc.
  • Define Can Make C Code More Pascal-like

define begin define end define
then
26
4. Language Extensions for a Database System
EQUEL - Database query language embedded in a
programming language. C
Retrieve (DNDepartment.Dnum) where
Department.Dname Research is
Preprocessed into ingres_system(Retr..Res
earch,____,____) a procedure call in a
programming language.
27
The Grouping of Phases
Front End Analysis Intermediate Code
Generation
vs.
Back End Code Generation Optimization
Number of Passes A pass requires r/w
intermediate files
Fewer passes more efficiency. However fewer
passes require more sophisticated memory
management and compiler phase interaction. Tradeof
fs ..
28
Compiler Construction Tools
Parser Generators Produce Syntax
Analyzers Scanner Generators Produce Lexical
Analyzers lt Lex (Flex) Syntax-directed
Translation Engines Generate Intermediate Code
lt Yacc (Bison) Automatic Code Generators
Generate Actual Code Data-Flow Engines Support
Optimization
Write a Comment
User Comments (0)
About PowerShow.com