Manas Thakur
Fall 2020
CS502: Compiler Design Introduction and Logistics Manas Thakur - - PowerPoint PPT Presentation
CS502: Compiler Design Introduction and Logistics Manas Thakur Fall 2020 Credits Content V. Krishna Nandivada (IIT Madras) Rupesh Nasre (IIT Madras) Yannis Smaragdakis (University of Athens) Media images.google.com
Fall 2020
Manas Thakur CS502: Compiler Design 2
– V. Krishna Nandivada (IIT Madras) – Rupesh Nasre (IIT Madras) – Yannis Smaragdakis (University of Athens)
– images.google.com – unsplash.com
Manas Thakur CS502: Compiler Design 3
Manas Thakur CS502: Compiler Design 4
It all started with communication!
Manas Thakur CS502: Compiler Design 5
How many languages do you know?
Manas Thakur CS502: Compiler Design 6
precursor to evolution.
everyone understands the other person’s language(s).
facilitate correct communication.
Manas Thakur CS502: Compiler Design 7
– How does a computer communicate to you?
Manas Thakur CS502: Compiler Design 8
Source: codingdojo.com
– HTML for web pages – LaTeX for document formatting – Scripting for automation – Makefile’s language? – Google’s language??
– We will use some in this course.
– Google (or DDG if you prefer)
“esoteric programming languages”
Manas Thakur CS502: Compiler Design 9
– Preprocessor – Compiler – Interpreter – Assembler
Translator
Source program Object program
Manas Thakur CS502: Compiler Design 10
Preprocessor (cpp) Preprocessor (cpp) Compiler (gcc) Compiler (gcc) Assembler (as) Assembler (as) Linker / Loader (ld) Linker / Loader (ld) Source program (fjle.c) Modifjed source program (fjle.i) Target assembly program (fjle.s) Relocatable machine code (fjle.o) Target machine code (a.out) library fjles, relocatable
Manas Thakur CS502: Compiler Design 11
Compilers – A Sangam of Theory and Practice
Compilers
This course offers a healthy mix of multiple areas of computer science and engineering!
Theory of Computation Programming languages Algorithms Software Engineering Computer Architecture Machine learning?
Manas Thakur CS502: Compiler Design 12
– Obviously!
– Theory is indeed useful – Practice is also required
– Design is important – Improve programming skills
– Precision vs efficiency – Difficult to always get a win-win
Manas Thakur CS502: Compiler Design 13
– Where: Zoom (at least for now) – When: F Slot (Mon 3pm, Tue 4pm, Thu 9am, Fri 10am, Sat 11am)
– Course web page (deadlines, slides, other relevant material)
– Moodle (assignment specs, submissions, marks)
– Microsoft Teams (discussions, activities, fun)
Manas Thakur CS502: Compiler Design 14
– Quiz (20 marks) – End sem (30* marks)
– A1 (10 marks) – A2 (8 marks) – A3 (12 marks) – A4 (10 marks) – A5 (10* marks)
* A5 marks can optionally be added to end-sem.
(read about MOSS from Stanford)
(public, private, contributed)
– 25% less per late day
Manas Thakur CS502: Compiler Design 15
– Java – Won’t be difficult to catch up if you know C/C++ instead
– Java Tree Builder (JTB) – JavaCC – Using an IDE (such as Eclipse or IntelliJIdea) for code completion
and debugging would help tremendously
Manas Thakur CS502: Compiler Design 16
– Sometimes during the class – Sometimes on Teams
– Deadline extensions – Coffees after you come back – More interesting ideas as they come!
Participation Credits
Manas Thakur CS502: Compiler Design 17
Fall 2020
Manas Thakur CS502: Compiler Design 19
– Interpreter – Compiler
– interpreted
– compiled
Translator
Source program Target program
Manas Thakur CS502: Compiler Design 20
Image source: https://stackoverflow.com/a/31551282
Manas Thakur CS502: Compiler Design 21
Manas Thakur CS502: Compiler Design 22
Manas Thakur CS502: Compiler Design 23
–
पीताजी अजमेर गए | Father died today.
– Why are you laughing? – I understood yesterday's joke.
– I got books but more than that I got your letter.
मैः पीताबेः, लेपीन मैः अने त्ऱ मीमला है पी अमी से अमी मीमला है।
Manas Thakur CS502: Compiler Design 24
– Need for speed – My computer is cleaner than my almirah – Save energy, save environment
– Find bugs – Suggest/perform refactorings
– Did you install Eclipse/IntelliJ? – How do IDEs differ from command prompt?
Manas Thakur CS502: Compiler Design 25
– ‘a’, ‘2’, ‘=’, ‘;’
– “a”, “int”, “while”, “foo”
– “int a = 2;”
Manas Thakur CS502: Compiler Design 26
Compiler Compiler Source program Target program Analyze source code Analyze source code Source program Target program Generate target code Generate target code Analyze source code Analyze source code Source program Target program Improve code Improve code Generate target code Generate target code
Manas Thakur CS502: Compiler Design 27
Lexical Analyzer Lexical Analyzer Syntax Analyzer Syntax Analyzer Semantic Analyzer Semantic Analyzer Intermediate Code Generator Intermediate Code Generator Character stream Token stream Syntax tree Syntax tree Intermediate representation Machine-Independent Code Optimizer Machine-Independent Code Optimizer Code Generator Code Generator Target machine code Intermediate representation Machine-Dependent Code Optimizer Machine-Dependent Code Optimizer Target machine code Symbol Table
F r o n t e n d B a c k e n d
Manas Thakur CS502: Compiler Design 28
Lexical Analyzer Lexical Analyzer Syntax Analyzer Syntax Analyzer Semantic Analyzer Semantic Analyzer Code Generator Code Generator z = x + y * 32 <id,1> <=> <id,2> <+> <id,3> <*> <32> Intermediate Code Generator Intermediate Code Generator Machine-Independent Code Optimizer Machine-Independent Code Optimizer
t1 = id3 * 32 t2 = inttofloat(t1) t3 = id2 + t2 id1 = t3
Machine-Dependent Code Optimizer Machine-Dependent Code Optimizer <id,1> <id,2> <id,3> 32 * + = <id,1> <id,2> <id,3> * inttofloat + = 32
t1 = id3 * 32.0 id1 = id2 + t1 LD R1, id3 MUL R1, R1, #32.0 LD R2, id2 ADD R1, R1, R2 ST id1, R1 LD R1, id3 SHL R1, #5 LD R2, id2 ADD R1, R1, R2 ST id1, R1
z ... x ... y ... 1 2 3 Symbol Table
Fall 2020
Manas Thakur CS502: Compiler Design 30
One Compiler One Compiler Fortran C Java Future Language ARM x86 PowerPC Future Target
gcc gcc f90 f90 Fortran C Java Future Language ARM x86 PowerPC Future Target javac javac futurec futurec ?
Manas Thakur CS502: Compiler Design 31
use the same virtual machine.
– Most problems in the front-end are polynomial. – Most problems in the back-end are NP-complete.
– Front-end needs patience – Back-end makes us impatient
Source code Target code Intermediate code Front end Back end