![Page 1: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/1.jpg)
Compilers
Lecture 1
Introduction
Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts)
![Page 2: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/2.jpg)
222
Discussion What does a compiler do?
Why do you need that?
Name some compilers you have used
![Page 3: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/3.jpg)
333
A Brief History of High-Level Languages 1953 IBM develops the 701
Memory: 4096 words of 36 bits Speed: 60 msec for addition All programming done in assembly code
![Page 4: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/4.jpg)
444
Programming What’s the problem?
Assembly programming very slow and error-prone Software costs exceeded hardware costs!
John Backus: “Speedcoding” Simulate a more convenient machine But, ran 10-20 times slower than hand-written assembly
Backus Idea: translate high-level code to assembly Many thought this impossible
Had already failed in other projects 1954-7 FORTRAN I project
By 1958, >50% of all code is in FORTRAN Cut development time dramatically – from weeks to hours
![Page 5: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/5.jpg)
555
FORTRAN I The first compiler
Huge impact on computer science Produced code almost as good as hand-written
Led to an enormous body of work Theoretical work on languages, compilers Program semantics Thousands of new languages
Modern compilers preserve the outlines of FORTRAN I
![Page 6: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/6.jpg)
666
Language implementations
Can you think of another strategy –
a “hybrid”?
![Page 7: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/7.jpg)
777
Languages involved
int i = 10;
while (i > 0) {
x = x * 2;
i = i – 1;
}
movl %esp, %ebp subl $4, %esp movl $10, -4(%ebp).L2: cmpl $0, -4(%ebp) jle .L3 movl 8(%ebp), %eax sall %eax movl %eax, 8(%ebp) leal -4(%ebp), %eax decl (%eax) jmp .L2.L3: movl 8(%ebp), %eax
Source
Target
![Page 8: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/8.jpg)
888
The compilation problem Assembly language
Converts trivially into machine code No abstraction: load, store, add, jump, etc. Extremely painful to program What are other problems with assembly programming?
High-level language Easy to understand and maintain Abstractions: control (loops, branches); data (variables,
records, arrays); procedures Problem: how do we get from one to the other?
(systematically)
![Page 9: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/9.jpg)
999
Translation process
Words
Sentences
Meaning
Sentences
Words
Assembly/machine codeHigh-level language
Letters Letters
![Page 10: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/10.jpg)
101010
Sounds easy! Translation can be tricky…
Infallible source: the Internet
I saw the Pope (“el Papa”) I saw the potato (“la papa”)
It won't leak in your pocket and embarrass you (“no los embarass”)
It won't leak in your pocket and make you pregnant (“no embarazado”)
It takes a tough man to make a tender chicken
It takes a hard man to make a chicken affectionate
![Page 11: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/11.jpg)
111111
Job #1 What is our primary concern?
Words or code: translate it correctly
How do we know the translation is correct? Specifically, how do we know the resulting machine code
does the same thing
“Does the same thing” What does that even mean?
![Page 12: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/12.jpg)
121212
Correctness Practical solution: automatic tools
Parser generators, regular expressions, rewrite systems, dataflow analysis frameworks, code generator-generators
Extensive testing
Theoretical solution: a bunch of math Formal description of semantics A proof that the translation is correct
Topic of current research
![Page 13: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/13.jpg)
131313
Incorrectness What is this?
The infamous “Blue Screen of Death”
Internal failure in the operating system
Buggy device driver
![Page 14: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/14.jpg)
141414
Good enough? Is there more than correctness?
Drop your pants here for best results.
-Tokyo dry cleaner
Our wines leave you nothing to hope for.
-Swiss menu
When passenger of foot heave in sight, tootle the horn. Trumpet him melodiously at first, but if he still obstacles your passage then tootle him with vigor.
-Car rental brochure
![Page 15: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/15.jpg)
151515
Job #2 Produce a “good” translation
What does that mean for compilers?Good performance – optimization Reduce the amount of work (“be concise”) Utilize the hardware effectively (“choose your words
carefully”)
How hard could that be?
![Page 16: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/16.jpg)
161616
Past processors
More speed, more complexity But, same machine code – why is that nice?
Pentium M
8086 29,000 transistors
140,000,000 transistors
![Page 17: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/17.jpg)
171717
Tomorrow’s processors
Parallel, heterogeneous Really hard to program!
Xbox 360 PS-3 CELL
Intel Core Duo
![Page 18: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/18.jpg)
181818
Structure of a compiler
Words
Sentences
Meaning
Sentences
Words
Back EndFront End
Letters Letters
![Page 19: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/19.jpg)
191919
Structure of a compiler
Organized as a series of passes Lexical Analysis Parsing Semantic Analysis Optimization Code Generation
We will follow this outline in the class
Front End
Back End
![Page 20: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/20.jpg)
202020
What I want you to getout of this class Understand how compilers work
Duh
See how theory and practice work together Yes, theory of computation is good for something Also: graph algorithms, lattice theory, more…
Work with a large-ish software systems
Learn to think about tradeoffs System design always involves tradeoffs Impossible to maximize everything
![Page 21: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/21.jpg)
212121
Study of compilers Brings together many parts of CS
Practical and theoretical Some solved problems, others unsolved
Compiler
Programminglanguages
Operatingsystems
Computerarchitecture
Theory ofcomputation
Algorithms
![Page 22: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/22.jpg)
222222
Course StructureCourse has theoretical and practical aspects
Programming assignments = practice Three homework projects 55% of final grade
Final exam: 50%
Need to pass both exam and projects
Late policy:
Up to five late days per assignment, 5% penalty per day
![Page 23: Compilers - Εθνικόν και Καποδιστριακόν ...cgi.di.uoa.gr/~thp06/lectures/lecture-01.pdf · 2019-02-18 · Compilers Lecture 1 Introduction Yannis Smaragdakis,](https://reader030.vdocument.in/reader030/viewer/2022041107/5f09b9387e708231d42835b5/html5/thumbnails/23.jpg)
232323
Project Build a compiler for a subset of Java
Implemented in Java