CoqToLeanAsm: x86 Macro Assembler in Lean 4

9.1. The ProgBuilder Monad

Programs are built using ProgBuilder, which tracks:

  • Emitted instructions via ProgBuilder.emit

  • Label definitions via ProgBuilder.label

  • A fresh label counter

X86.ProgBuilder (α : Type) : Type#check ProgBuilder X86.ProgBuilder.emit (i : Instr) : ProgBuilder Unit#check ProgBuilder.emit X86.ProgBuilder.label (name : String) : ProgBuilder Unit#check ProgBuilder.label

Build a complete program with ProgBuilder.buildProg:

X86.ProgBuilder.buildProg (m : ProgBuilder Unit) (startCounter : Nat := 0) : Program#check ProgBuilder.buildProg