Targets, OS, and hardware
Language semantics stay architecture-independent; ISA and hardware capabilities enter later through the target model.
A display driver should not need to be written in assembly just because it is embedded. Assembly is reserved for reset/bring-up, interrupt entry, or operations that cannot be safely expressed in Axiom.
An SPI display driver
1display(Self):2 set_pixel(Self self, u16 x, u16 y, color c)3 flush(Self self) -> result<void, io_error>4END display56st7789:7 spi_bus bus8 gpio_pin dc9 gpio_pin reset1011 set_pixel(st7789 self, u16 x, u16 y, color c):12 require x < 24013 require y < 32014 // encode command/data into bounded transfer buffer15END st7789Generic display interface.
Concrete controller type.
Typed SPI capability.
Concrete method.
Display geometry becomes a contract.
Second coordinate bound; later address calculations inherit those facts.
MMIO boundary
hardware.mmio can be a compiler-known privileged API. It exposes typed register access tied to target descriptions instead of raw pointers. The small MMIO edge may be sus; the driver around it remains analyzable Axiom.
Assembly modules
External .S/.asm objects enter at the object/link stage through symbols and relocations. Their signatures, clobbers, memory effects, and contracts are explicit trusted declarations.