Compiling Techniques Lecture 1: Introduction Christophe Dubach 17 - - PowerPoint PPT Presentation

compiling techniques
SMART_READER_LITE
LIVE PREVIEW

Compiling Techniques Lecture 1: Introduction Christophe Dubach 17 - - PowerPoint PPT Presentation

How is the course structured? What is a compiler? Why studying compilers? Compiling Techniques Lecture 1: Introduction Christophe Dubach 17 September 2019 Christophe Dubach Compiling Techniques How is the course structured? What is a


slide-1
SLIDE 1

How is the course structured? What is a compiler? Why studying compilers?

Compiling Techniques

Lecture 1: Introduction Christophe Dubach 17 September 2019

Christophe Dubach Compiling Techniques

slide-2
SLIDE 2

How is the course structured? What is a compiler? Why studying compilers?

Christophe Dubach

Co-design space exploration using machine-learning Machine-learning driven processor runtime adaptation Machine-learning driven optimisation for GPUs GPU compilation from high-level languages High-level synthesis

  • f Java Bytecode

for FPGAs MSc PhD Postdoc Lecturer / Reader Lift: Performance Portability with Data-Parallel Abstrations and Rewrite-Rules 2005 2008 2012 2020 2000 Associate Professor

Christophe Dubach Compiling Techniques

slide-3
SLIDE 3

How is the course structured? What is a compiler? Why studying compilers?

Table of contents

1 How is the course structured? 2 What is a compiler? 3 Why studying compilers?

Christophe Dubach Compiling Techniques

slide-4
SLIDE 4

How is the course structured? What is a compiler? Why studying compilers?

Essential Facts

Lecturers: Christophe Dubach (christophe.dubach@ed.ac.uk) & Hugh Leather Office hours: Wednesdays 10am-11am (IF-1.12) Textbook (not strictly required):

Keith Cooper & Linda Torczon: Engineering a Compiler Elsevier, 2004 Textbook can be reused in UG4 Compiler Optimisation

Course website: http://www.inf.ed.ac.uk/teaching/courses/ct/ Discussion forum: http://piazza.com/ed.ac.uk/fall2019/ct Action Create an account and subscribe to the course on piazza.

Christophe Dubach Compiling Techniques

slide-5
SLIDE 5

How is the course structured? What is a compiler? Why studying compilers?

Essential Facts

Course is 20 credits Evaluation: no exam, coursework only Expect to spend a lot of hours on the coursework (∼200+) A lot of programming! (mainly Java but also a bit of C++) 3 hours of lectures per week + 2 hours labs

Christophe Dubach Compiling Techniques

slide-6
SLIDE 6

How is the course structured? What is a compiler? Why studying compilers?

Coursework (1)

There will be two distinct coursework assignments.

1 Write a full compiler from scratch (70% of total mark)

Will be written in Java For a subset of C (includes pointers, recursion, structs, memory allocation, ...) Backend will target a real RISC assembly Generated code executable in a simulator Three deadlines:

week 4 (20%) Parser week 6 (20%) Abstract Syntax Tree (AST) + Semantic Analyser week 9 (30%) Code generator

Christophe Dubach Compiling Techniques

slide-7
SLIDE 7

How is the course structured? What is a compiler? Why studying compilers?

Coursework (2)

2 Write a compiler pass in an existing compiler

(30% of total mark)

LLVM-based

  • ne deadline: week 1 semester 2

Will be taught by Aaron Smith (Microsoft Research) Very practical knowledge to anyone interested in compiler industry

Christophe Dubach Compiling Techniques

slide-8
SLIDE 8

How is the course structured? What is a compiler? Why studying compilers?

Coursework is challenging

Coursework requires good programming skills Java for 1st assignment + basic knowledge of C C/C++ for 2nd assignment E.g. exceptions, recursion, Java collections classes, inheritance, ... Assumes basic knowledge of Unix command line and build system (can be learnt on the fly to some extend) cp, mv, ls, ... ant, makefile Git will be used for the coursework (will be learnt on your own)

Christophe Dubach Compiling Techniques

slide-9
SLIDE 9

How is the course structured? What is a compiler? Why studying compilers?

Coursework marking and labs

Automated system to evaluate coursework

Mark is a function of how many programs compile successfully Nightly build of your code with scoreboard : do not rely on it!!!

Will rely on git/gitlab Action Check that you can access https://git.ecdf.ed.ac.uk/ mandatory demo; if no demo → mark = 0 Labs here to help with coursework in one session of 2 hours

Thursday 14:10 - 16:00, Appleton Tower, 6.06

Labs start this week and end on week 11.

Christophe Dubach Compiling Techniques

slide-10
SLIDE 10

How is the course structured? What is a compiler? Why studying compilers?

Coursework is also rewarding

You will understand what happens when you type: $ gcc hello.c But also: Will deepened your understanding of computing systems (from language to hardware) Will improve your programming skills Will learn about using revision control system (git)

Christophe Dubach Compiling Techniques

slide-11
SLIDE 11

How is the course structured? What is a compiler? Why studying compilers?

Class-taking Technique

Extensive use of projected material

Attendance and interaction encouraged Feedback also welcome

Reading book is optional (course is self-contain, book is more theoretical) Not a programming course! Start the practical early Help should be sought on Piazza in the first instance

Christophe Dubach Compiling Techniques

slide-12
SLIDE 12

How is the course structured? What is a compiler? Why studying compilers?

Syllabus

Overview Scanning Parsing Abstract Syntax Tree Semantic analysis Code generation

Virtual machines (Java) Bytecode Real machines assembly

LLVM compiler infrastructure (Aaron Smith from MSR) Advanced topics

Instruction selection register allocation

Christophe Dubach Compiling Techniques

slide-13
SLIDE 13

How is the course structured? What is a compiler? Why studying compilers?

Compilers

What is a compiler? A program that translates an executable program in one language into an executable program in another language. The compiler might improve the program, in some way. What is an interpreter? A program that directly execute an executable program, producing the results of executing that program Examples: C is typically compiled R is typically interpreted Java is compiled to bytecode, then interpreted or compiled (just-in-time) within a Java Virtual Machine (JVM)

Christophe Dubach Compiling Techniques

slide-14
SLIDE 14

How is the course structured? What is a compiler? Why studying compilers?

A Broader View

Compiler technology = Off-line processing Goals: improved performance and language usability Making it practical to use the full power of the language Trade-off: preprocessing time versus execution time (or space) Rule: performance of both compiler and application must be acceptable to the end user Examples: Macro expansion / Preprocessing Database query optimisation Javascript just-in-time compilation Emulation: e.g. Apple’s Intel transition from PowerPC (2006)

Christophe Dubach Compiling Techniques

slide-15
SLIDE 15

How is the course structured? What is a compiler? Why studying compilers?

System Stack

Problem Algorithm Program (Language) Runtime System (VM, OS) ISA (Architecture) Micro-architecture Logic Circuits Electrons Compilation

Christophe Dubach Compiling Techniques

slide-16
SLIDE 16

How is the course structured? What is a compiler? Why studying compilers?

Why study compilation?

Compilers are important system software components: they are intimately interconnected with architecture, systems, programming methodology, and language design Compilers include many applications of theory to practice: scanning, parsing, static analysis, instruction selection Many practical applications have embedded languages: commands, macros, formatting tags Many applications have input formats that look like languages: Matlab, Mathematica Writing a compiler exposes practical algorithmic & engineering issues: approximating hard problems; efficiency & scalability

Christophe Dubach Compiling Techniques

slide-17
SLIDE 17

How is the course structured? What is a compiler? Why studying compilers?

Intrinsic interest

Compiler construction involves ideas from many different parts of computer science Artificial intelligence Greedy algorithms Heuristic search techniques Algorithms Graph algorithms Dynamic programming Theory DFA & PDA, pattern matching Fixed-point algorithms Systems Allocation & naming Synchronisation, locality Architecture Pipeline & memory hierarchy management Instruction set Software engineering Design pattern (visitor) Code organisation

Christophe Dubach Compiling Techniques

slide-18
SLIDE 18

How is the course structured? What is a compiler? Why studying compilers?

Intrinsic merit

Compiler construction poses challenging and interesting problems: Compilers must do a lot but also run fast Compilers have primary responsibility for run-time performance Compilers are responsible for making it acceptable to use the full power of the programming language Computer architects perpetually create new challenges for the compiler by building more complex machines Compilers must hide that complexity from the programmer Success requires mastery of complex interactions

Christophe Dubach Compiling Techniques

slide-19
SLIDE 19

How is the course structured? What is a compiler? Why studying compilers?

Making languages usable It was our belief that if FORTRAN, during its first months, were to translate any reasonable ”scientific” source program into an object program only half as fast as its hand coded counterpart, then acceptance of our system would be in serious danger. . . . I believe that had we failed to produce efficient programs, the widespread use of languages like FORTRAN would have been seriously delayed. John Backus (1978)

Christophe Dubach Compiling Techniques

slide-20
SLIDE 20

How is the course structured? What is a compiler? Why studying compilers?

Next lecture

The View from 35000 Feet How a compiler works What I think is important What is hard and what is easy

Christophe Dubach Compiling Techniques