Freestanding thumbv8m.main-none-eabi

Generic Cortex-M33 freestanding target support in Inauguration.

Status

PieceStatus
Target registry identityImplemented
Native-emit registryImplemented (elf32-relocatable-object+raw+uf2)
Core IR → Thumb-2 lowerImplemented (native_emit::thumb_lower)
Thumb-2 encoderImplemented (native_emit::thumb)
ELF32 relocatable objectImplemented (real lowered bodies)
Raw binary helperExisting native_emit::raw
UF2 packing helperImplemented (native_emit::uf2)
Linker layout script generatorImplemented (native_emit::linker_layout)
Vector table / IRQ synthesisProduct-owned (e.g. Subspace)
MPU / board capsulesProduct-owned

Owned scalar subset

Supported: structs, fixed-size array locals with index/load/store, >4 params (AAPCS stack args), short-circuit &&/||, break. Rejected for now: strings, floats, closures, heap, array type annotations with explicit length. load64 / store64 touch the low 32-bit word only (freestanding Int is machine word).

ABI contract (MVP)

Foreign application bodies (C/Zig) must still pass product-level freestanding contract checks (stack, alloc=none/pool, blocking bounds). Inauguration only emits the object/raw/UF2 bytes once those contracts are verified upstream.

Example

in compile \
  --path answer.in \
  --target native \
  --target-triple thumbv8m.main-none-eabi \
  --linkage static-lib \
  --entry answer \
  --out answer.o \
  --json

Ownership

Inauguration owns generic emit helpers. Board bases, SCI-E, resource ledgers, and RTOS runtime stay in product repositories such as Subspace.