Compilers

23,964 views 30 slides Dec 29, 2011
Slide 1
Slide 1 of 30
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30

About This Presentation

Simple


Slide Content

COMPILERS J. Bense Tony Anna University Chennai

A compiler is a program that reads a program written in one language and translates into equivalent target language Source-  - Target | | | Error Message DEFINITION COMPILER

Language Processing Technique

The Front end checks whether the program is correctly written in terms of the programming language syntax and semantics The back end is responsible for translating the source into assembly code . Structure of a compiler

Front End : Lexical Analysis Preprocessing Syntax Analysis Semantic Analysis Structure of a compiler

Back End Analysis Optimization Code generation Structure of a compiler

Lexical Analyzer Syntax Analyzer Semantic Analyzer Intermediate code generator Code optimizer Code generator Phases of a compiler

Lexical Syntax Semantic Code Generator Code Optimizer Intermediate Code Generator Symbol Table manager Error Handler

Also called Linear Analysis Characters read from left to right and grouped into tokens that are a sequence of characters with a collective meaning  Scans Input Removes White spaces and comments Manufacture Tokens Generate Error if Any Lexical analysis

Example A=B+C Variable tokens -  A ,B, C Symbolic token --  = + Lexical analysis

Also called as Hierarchial Analysis A syntax tree[also called as parse tree] is generated where Operators  Interior nodes Operands  Children of node for operators. = A + Interior B C Children Syntax Analysis

Characters grouped as tokens in Lexical Analysis are recorded as Tables. Checks for semantic errors Collect TYPE information for the subsequent code generation phase Semantic analysis

Sophisticated compilers typically perform multiple passes over various intermediate forms. Many algorithms for code optimization are easier to apply one at a time The input to one optimization relies on the processing performed by another optimization Intermediate Code Generator

Input : Concrete Syntax Tree[Parse Tree] or Abstract Syntax Tree The tree is converted into a linear sequence of instructions, usually in an intermediate language such as three address code. This is an Early stage of Code generation Working of ICG

Concrete Parse tree Abstract syntax tree Converted into a linear sequence of instructions Results in 3AC [ 3 Address Code] Working of ICG

This phase attempts to improve the intermediate code inorder to increase the running time Reduce the complexity of the code generated Leading to a faster execution of the program Increased Performance Code optimization

Platform Dependant/ Platform Independent Optimization can be automated by compilers or performed by programmers Usually, the most powerful optimization is to find a superior algorithm. Include activities like Optimization of LOOPS Optimization of Bottlenecks Code optimization

Succeeding step of Intermediate code optimizer Consists of re-locatable machine code/assembly code Intermediate instructions are converted into a a sequence of machine instructions Code generator

One pass compilers Multi pass compilers Load and go compilers Optimizing compilers Types of compilers

One pass Multi pass Passes through the source code of each compilation unit only once Processes the source code of a program several times Compilation time is faster Compilation time is slower Has limited scope of passes Has wide scope of passes. wide compilers Narrow compilers Pascal Java One and multi pass

Generates machine code and immediately executes it. Compilers usually produce either absolute code that is executed immediately upon conclusion of the compilation or object code that is transformed by a linking loader into absolute code. Load and Go

Loop optimization Data flow Code generation Functional language Interprocedural optimizations SSA [Static Single Assignment] based optimizations Optimising compilers

Threaded code compiler database lookup program. replaces given strings in the source with given binary code. Incremental compiler : Individual functions can be compiled in a run-time environment that also includes interpreted functions. Other Types of compilers

Stage compiler T hat compiles to assembly language of a theoretical machine, like some Prolog implementations Just-in-time compiler Applications are delivered in byte code, which is compiled to native machine code just prior to execution Other Types of compilers

A Retargetable compiler object code is frequently of lesser quality than that produced by a compiler developed specifically for a processor. Retargetable compilers are often also cross compilers A parallelizing compiler converts a serial input program into a form suitable for efficient execution on a parallel computer architecture. Other Types of compilers

The compiler highlights all the possible errors which are obstacle in the program to provide a good meaning. Logical errors could be found only at Run time of the program . Errors by compilation

Array bound missing Array size too large Bad file name Call of on function Declaration missing Compound statement missing Illegal Accessions Basic errors In C

Not abstract Not accessible Not initialized Not found in “import” Scope related errors Cannot be inherited Overloading Overriding errors Basic errors In Java

Program is free from lexical errors Program is free from syntax errors Program is free from semantic errors Even a complex program could be compiled in a small interval of time In programs related to database accessing, many risks are reduced. Advantages of compiling

THANK YOU