Computing

Compilers and Computer Architecture

Module code: G5035
Level 5
15 credits in autumn semester
Teaching method: Class, Lecture
Assessment modes: Coursework, Computer based exam

This module will discuss the key ideas in implementation of compilers for modern programming languages like Java, including

  • lexical analysis
  • parsing
  • semantic analysis based on types and type checking
  • syntax-directed translation using abstract syntax trees
  • intermediate languages
  • code generation.

We will also discuss run-time issues such as garbage collection.

We will look at key ideas in processor architecture such as:

  • stack machines and register machines
  • RISC vs CISC processors
  • processor caching.

Pre-requisite

Further Programming or ability to program in Java.

Module learning outcomes

  • Explain the structure of a conventional compiler, showing the interfaces between the phases.
  • Use formal syntactic specifications for common high-level language constructs in the construction of the analysis phase of a compiler.
  • Implement modules of a complete compiler for a simple source language and a simple target architecture.
  • Explain the key characteristics of the instruction set of a simple modern processor and illustrate how it can be used in compiler-generated code.