Resolve symbols. Apply relocations. Produce a flat binary. Five worksheets in worksheets/ch6a/ build the linker that completes the assembler from week 6.
Anchors the week
Week 7: Static Linker. The linker is the step Petzold parenthesized; the academy brings it to the foreground because real toolchains depend on it.
Concept the lab embodies
Symbol resolution. Names get final addresses; the encoded bytes get patched to use those addresses; the binary becomes self-contained.
The five worksheets
| Worksheet | Time | Purpose |
|---|---|---|
| lab-6a.1-symbol-resolution.md | ~90 min | Collect all symbol defs; match all refs |
| lab-6a.2-two-relocation-types.md | ~90 min | PC-relative and absolute patching |
| lab-6a.3-link-and-boot-two-files.md | ~90 min | Two-file program runs on silicon |
| lab-6a.4-corrupted-input-and-industry-reconciliation.md | ~90 min | Error handling; reconcile with ld |
| lab-6a.5-ghidra-whole-program.md | ~90 min | Ghidra reads the linked output |
Grading rubric
Per-worksheet rubrics. Week-level: linker handles symbol resolution and both relocation types; two-file program boots on silicon.
What's next
Lab pack 7: VM I. A new layer enters the toolchain.