Skip to content

Your code goes here

Read ../SPEC.md first. This directory is yours: design how you build the dependence DAG, how you compute priorities and keep the ready list, how you represent the reservation table, how you search for the II and how you allocate rotating registers, and split it into as many files as you like. Every *.cpp here is compiled automatically (EXERCISE_DIR src in ../CMakeLists.txt; re-run ./course test 23 after adding files).

Stub.cpp defines the two contract functions of ../include/sched/Scheduler.h, sched::scheduleBlock (list scheduling, E1-E3) and sched::scheduleLoop (modulo scheduling, E4-E5), so the project builds; each stops with TODO(ch23). Replace or delete it as you implement them.

The provided parser (sched/Program.h) and checker (sched/Check.h) are infrastructure: use them to read inputs and to debug your output (ch23-check), but build your own dependence graphs; the checker's are deliberately private.