M5: Code Generation

This fifth module we begin our transition to talking about code generation (i.e., the backend of the compiler).

Pre-recorded Lectures

Note: Professor Samuels will state on Ed when the prerecorded videos are ready to be viewed each week for a module.

The pre-recorded lectures are available here: M5 Videos. You can also find the videos under the “Panopto” tab on the MPCS 51300 canvas site.

The lectures are a series of approx 15-20 minute videos. Please come back here weekly as the videos will be updated if a module spans multiple weeks. This module includes the following videos:

Week 6

  • 5.1: ARM Procedure Standard

  • 5.2: C-Runtime Calls in ARM

  • 5.3: Writing a Simple ARM Program

Week 7

  • 5.4: Linear Register Allocation

The slides presented in these videos are accessible in the upstream repository.

Resources/Readings

  • The slides and code presented in this module are accessible in the upstream repository.

  • Engineering a Compiler readings:

  • Chapter 6.1 - 6.4

Synchronous Sessions (In-person Lecture)

As a reminder here are the dates and times for the synchronous session for this module:

Week 6

  • Dates/Times
    • Section 1: Wednesday February 12th 10:30am-12:20pm

    • Please note this class is remote! Please check Ed for the Zoom link.

  • Session Outline
    • Introduction Code Generation

    • ARM64 Overview

    • Procedure Abstraction

    • ARM Instructions [if time permits]

Week 7

  • Dates/Times
    • Section 1: Wednesday February 19th 10:30am-12:20pm

  • Session Outline
    • Liveness Analysis

    • LLVM SSA Formation

Assignment

Assignments are always due on Friday evenings.