Presentation is loading. Please wait.

Presentation is loading. Please wait.

Winter 200361102 Compilers Software Eng. Dept. – Ort Braude Compilers Lecturer: Esti Stein brd4.ort.org.il/~esti2.

Similar presentations


Presentation on theme: "Winter 200361102 Compilers Software Eng. Dept. – Ort Braude Compilers Lecturer: Esti Stein brd4.ort.org.il/~esti2."— Presentation transcript:

1 Winter Compilers Software Eng. Dept. – Ort Braude Compilers Lecturer: Esti Stein brd4.ort.org.il/~esti2

2 Winter Compilers Software Eng. Dept. – Ort Braude Admin. Information Credit points: 2.5 credits Office Hours: Monday 15:00 – 16:30 Prerequisites Courses: Automata and formal languages. Tel: Fax: Grading: 10% - homework ( must be submitted in order to pass the course). 90% - final exam (you have to pass exam in order to pass the course).

3 Winter Compilers Software Eng. Dept. – Ort Braude Bibliography A. Aho, R. Sethi, J. Ullman, Compilers - Principles, Techniques and Tools, Addison-Wesley, '86 - '88 R. Wilhelm, D. Maurer, Compiler Design, Addison-Wesley, '95 Kenneth C. Louden, Compiler Construction Principles and Practice, PWS Publishing Company, 1997 Steven S. Muchnik, Advanced Compiler Design and Implementation, Morgan-Kaufman, 1997 Tony Mason, John Levine, Doug Brown, lex & yacc, 2nd Edition October 1992 Andrew W. Appel, Maia Ginsburg, Modern Compiler Implementation in C, Cambridge University Press

4 Winter Compilers Software Eng. Dept. – Ort Braude Language & Communication [jonathan Schaffer © - Ualberta] Language: Any system of formalized symbols, signs, etc., used or conceived as a means of communication. [Random House] Communicate: to transmit or exchange thought or knowledge. [Funk & Wagnalls] person Computing problem Programming Language Communicate Machine Solve

5 Winter Compilers Software Eng. Dept. – Ort Braude Language is an intermediary Human expresses his way of thought in a rigid manner. Machine interprets the human specification & interprets it as instructions to follow. Goal – to automate the amount of work required to transmit ideas to a machine.

6 Winter Compilers Software Eng. Dept. – Ort Braude Hierarchy of languages Machine language Assembly Language High-level Problem oriented Natural language

7 Winter Compilers Software Eng. Dept. – Ort Braude Translator Translate the language into machine language Compiler – translate the source language into the hosts machine language. Interpreter – processes the source program and data at the same time.

8 Winter Compilers Software Eng. Dept. – Ort Braude For a language L – I L : L D * D * {error} I L ( P L, e) = a It does not use any information independent from the input data. Interpreter I L Program P L Input e Output a

9 Winter Compilers Software Eng. Dept. – Ort Braude If I L (P L, e) = a then I M ( P M, e) = a, where P M is the object program corresponding to P L. Compiler C L Program P L Object program P M Compile time Object program P M Input e Output a Run time Interpreter Machine I M

10 Winter Compilers Software Eng. Dept. – Ort Braude position := initial + rate * 60 The Phases of a Compiler lexical analyzer id 1 := id 2 + id 3 * 60 syntax analyzer := id 1 + id 2 * id 3 60 semantic analyzer := id 1 + id 2 * id 3 inttoreal 60 intermediate code generator temp1 := inttoreal (60) temp2 := id 3 * temp1 temp3 := id 2 + temp2 id1 := temp3 code optimizer temp1 := id 3 * 60.0 id1 := id 2 + temp1 code generator MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1

11 Winter Compilers Software Eng. Dept. – Ort Braude Language implementations Some newer languages use a combination of compiler and interpreter to get many of the benefits of each. Examples are Java and Microsofts.NET, which compile into a virtual assembly language (while being optimized), which can then be interpreted on any computer. Other languages (such as Basic or Lisp) have both compilers and interpreters written for them. Recently, Just-in-Time compilers are becoming more common - compile code only when its used!

12 Winter Compilers Software Eng. Dept. – Ort Braude How does a compiler work? similar to how a human approaches the same problem. Consider the following sequence: m p i W r I t e a C o m p i l e r Do you understand what it means? Can you describe the process ( how did you arrive at that conclusion)?

13 Winter Compilers Software Eng. Dept. – Ort Braude Compilation Phases 1.Recognize patterns that have some meaning (use alphabet, math. Signs, punctuation etc.) 2.Group character into logical entities (words). 3.Associate a meaning with each word. 4.Check that the words form a structurally correct sentence. (what about – compiler a write). 5.Check that the combination of words make sense. (what about – fly a compiler). 6.Plan what you have to do to accomplish the task.

14 Winter Compilers Software Eng. Dept. – Ort Braude Compilation Phases[2] Source program Tokens Parse tree Abstract syntax tree w. attr. Lexical analyzer Syntax analyzer Semantic analyzer Intermediate code Optimized Intermediate code Target machine code Intermediate-code generator Intermediate-code optimizer Target-code generator

15 Winter Compilers Software Eng. Dept. – Ort Braude History of compiler development 1953 IBM develops the 701 EDPM (Electronic Data Processing Machine), the first general purpose computer, built as a defense calculator in the Korean War No high-level languages were available, so all programming was done in assembly

16 Winter Compilers Software Eng. Dept. – Ort Braude History of compilers (cont d) As expensive as these early computers were, most of the money companies spent was for software development, due to the complexities of assembly. John Backus In 1953, John Backus came up with the idea of speed coding, and developed the first interpreter. Unfortunately, this was times slower than programs written in assembly. He was sure he could do better.

17 Winter Compilers Software Eng. Dept. – Ort Braude History of compilers (cont d) In 1954, Backus and his team released a research paper titled Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN. The initial release of FORTRAN I was in 1956, totaling 25,000 lines of assembly code. Compiled programs ran almost as fast as handwritten assembly! Projects that had taken two weeks to write now took only 2 hours. By 1958 more than half of all software was written in FORTRAN.

18 Winter Compilers Software Eng. Dept. – Ort Braude Structure of the compiler Front-end Back-end Machine Independ ent Machine Depende nt

19 Winter Compilers Software Eng. Dept. – Ort Braude Front-end Source program Tokens Parse tree Abstract syntax tree w. attr. Lexical analyzer Syntax analyzer Semantic analyzer Symbol Table Error handler

20 Winter Compilers Software Eng. Dept. – Ort Braude Back-end Intermediate code Optimized Intermediate code Target machine code Intermediate-code generator Intermediate-code optimizer Target-code generator Symbol Table Error handler

21 Winter Compilers Software Eng. Dept. – Ort Braude Passes Each component in a compiler can be viewed as a separate pass. Usually several passes run concurrently. Examples: Pascal – designed to be 1-pass compiler. PL/1 – At least 50 passes! C/C++ - typically 2 to 3 passes: - pre-processor, analysis phase, synthesis phase.

22 Winter Compilers Software Eng. Dept. – Ort Braude 5 languages on 4 machines eq. 20 compilers ?? No!! If you do it right: 5 front-ends 4 back-ends Porting a language to a new machine Source language Target Machine PascalIBM CSUN C++SGI FortranHP PL/1

23 Winter Compilers Software Eng. Dept. – Ort Braude Summery An automation of the lexical and syntactic analysis phases: lex, flex, lexagen – lexical analysis generators. yacc, bison – parses generators. suif – framework for an optimizer compiler.


Download ppt "Winter 200361102 Compilers Software Eng. Dept. – Ort Braude Compilers Lecturer: Esti Stein brd4.ort.org.il/~esti2."

Similar presentations


Ads by Google