Exam Questions
- Top-down parsing: LL(1)
- Bottom-up parsing: LR(1)
- Symbol tables and type checking
- Code generation
- Liveness analysis and register allocation
- Optimization
- Garbage collection
Curriculum (pensum)
The overall guideline is that you are expected to know what we have covered in lectures and exercises, and my focus in the examination will be on those topics.Though it will not be a something that you will be examined in directly, you are of course expected to know topics from courses that are prerequisites for this course. This includes topics such as regular expressions, finite automata, assembler programming, hash tables, etc.
Curriculum material from the course textbook (Section 0 refers to the first part of each chapter before Section 1):
- Chapter 1
- Chapter 2
- Chapter 3, except Section 3.5
- Chapter 4
- Chapter 5, with the recommendation below
- Chapter 6
- Chapter 7, see below
- Chapter 8, see below
- Chapter 9, see below
- Chapter 10, only Sections 10.0 and 10.1
- Chapter 11, only Sections 11.0 and 11.1
- Chapter 13, except Sections 13.4-13.6
- Kim S. Larsen, Supplementary Notes for DM546, February 11, 2019.
- All of the seven sets of lecture notes.
- The complete stack frame layout.
- All exercises posed on work notes.
Textbook exemptions:
- With regards to exercises in the the textbook, you are only expected to know the ones that have been posed on the work notes.
- You are not expected to be familiar with material in "Further Reading" subsections.
- You will not be asked questions that only relate to the tiger language used as an example in the textbook.
- For the symbol table implementation in Chapter 5, you may (and this is actually recommended) instead discuss the implementation described in Supplementary Notes for DM546. Note that this is what we did in the lecture.
- With regards to Chapters 7-9, you will not be asked to account for translations into the tree format described in the book. Use the code generation templates as your starting point, as described in Supplementary Notes for DM546, and use the chapters for details regarding how you treat issues not specified in the templates. For functions in particular, use the templates in combination with the stack frame and the examples of how factorial, for instance, is implemented in assembler.