AXIOM Axiom Documentation
UABLACKGRAYWHITE
Axiom · dark

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

Driver in AxiomAxiom
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 st7789
1

Generic display interface.

6

Concrete controller type.

7

Typed SPI capability.

11

Concrete method.

12

Display geometry becomes a contract.

13

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.