lecture 2 phases of compiler. preprocessors, compilers, assemblers, and linkers preprocessor...

Post on 23-Dec-2015

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lecture 2

Phases of Compiler

Preprocessors, Compilers, Assemblers, and Linkers

Preprocessor

Compiler

Assembler

Linker

Skeletal Source Program

Source Program

Target Assembly Program

Relocatable Object Code

Absolute Machine Code

Libraries andRelocatable Object Files

Compiler structure

sourcecode

targetcodeFront End Back End

IR

Phases of compiler

The Phases of a CompilerPhase Output Sample

Programmer (source code producer) Source string Position=initial+ rate*60

Scanner (performs lexical analysis) Token string <id 1><=><id 2><+> <id 3><*><60>

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

Parse tree or abstract syntax tree = / \<id 1> + / \ <id 2> * / \ <id 3> 60

Semantic analyzer (type checking, etc) Annotated parse tree or abstract syntax tree

= / \<id 1> + / \ <id 2> * / \ <id 3> inttofloat | 60

5

Cont’d

Phase Output Sample

Intermediate code generator Three-address code t1 = intofloat(60)t2 = id3 * t1t3 = id2 + t2id1 = t3

Code Optimizer • To improve the intermediate code so that better target code will result• Three-address code,

t1 = id3* 60.0id1 = id2 + t1

Code generator Assembly code LDF R2, id2MULF R2, R3, #60.0LDF R1, id2ADDF R1, R1, R2STF id1, R1

The Grouping of Phases into passesCompiler 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

7

Compiler-Construction ToolsSoftware development tools are

available to implement one or more compiler phases

1. Parser generators 2. Scanner generators 3. Syntax-directed translation engines 4. Code-generator generators that 5. Data-flow analysis engines6. Compiler-construction toolkits that

Cont’d………………..

1. Scanner generators- that produce lexical analyzers from a

regular-expression description of the tokens of a language

2. Parser generators-that automatically produce syntax

analyzers from a grammatical description of a programming language

9

3. Syntax-directed translation-Engines- that produce collections of

routines for walking a parse tree and generating intermediate code.4. Code-generators- that produce a code generator from

a collection of rules for translating each operation of the intermediate language into the machine language for a target machine.

Cont’d…………….

5. Data-flow analysis engines- that facilitate the gathering of

information about how values are transmitted from one part of a program to each other part.

Data-flow analysis is a key part of code optimization.

6. Compiler-construction toolkits –that provide an integrated set of

routine for constructing various phases of a compiler.

top related