| ; compiler.lli β the toolchain describes itself | |
| ; Sovereign LLI Self-Hosting Compiler Specification | |
| ; Ahmad Ali Parr Β· SnapKitty Β· 2026 | |
| ; LLI Self-Description (Artifact 2 from spec) | |
| β S . shape(parse(S)) = Stmt* | |
| β shape(extract(Stmt*)) = Requires* | |
| β shape(allocate(Requires*)) = AllocMap | |
| β shape(encode(Stmt*, AllocMap)) = Instr* | |
| β shape(prove(Instr*, Requires*)) = Proof* | |
| β shape(certify(Instr*, Proof*)) = (Binary, Cert) | |
| β verify(certify(Β·)) = β€ | |
| ; Layer 8: DFA Parser (Finite State Transducer) | |
| ; Input: bit stream from WORM log / register file | |
| ; Output: lli_statement(Addr, Op, Args) facts β Scratch region | |
| ; Implementation: 256-state DFA, jump table in first 1KB of Weight memory | |
| ; Layer 9: Constraint Extractor (Pure Function) | |
| ; Reads lli_statement facts | |
| ; Looks up shape_rule/3 from compile-time constant table | |
| ; Writes requires_shape/3 facts | |
| ; Zero branching: table lookup only | |
| ; Layer 10: Linear Register Allocator | |
| ; Single forward pass over addresses 0..N-1 | |
| ; live_range(Var, Start, End) from use-def chains (single backward scan) | |
| ; choose_min_reg: lowest free register at each step | |
| ; Free list: 16-bit bitmap in r15 | |
| ; Complexity: O(N Γ 16) | |
| ; Layer 11: Instruction Encoder | |
| ; For each lli_statement in address order: | |
| ; 1. Fetch opcode from constant table | |
| ; 2. Fetch allocated registers for dst, src1, src2 | |
| ; 3. Encode immediate | |
| ; 4. Write 32-bit instruction to Code memory region | |
| ; Emits emitted_instr/6 facts for verification | |
| ; Layer 12: Shape Prover (Compile-Time) | |
| ; Iterates all emitted_instr facts | |
| ; Checks requires_shape against reg_shape (propagated from allocation) | |
| ; reg_shape(Dst, OutShape) :- emitted_instr(Addr,Op,Dst,Src,_,_), | |
| ; requires_shape(Op,InShape,OutShape), reg_shape(Src,InShape). | |
| ; Fixed-point in β€ N steps (monotone, finite lattice) | |
| ; Compilation fails if any :- emitted_instr(Addr,...), not shape_ok(Addr). triggers | |
| ; Layer 13: Certificate Assembler | |
| ; Collects shape_ok/1 derivations | |
| ; Collects allocation proofs (allocated/3) | |
| ; Collects bound proofs (length(Program) β€ B_code) | |
| ; Hashes program binary (SHA-256 in ALU microcode) | |
| ; Signs with Ed25519 private key (Plasma Gate, Layer 0) | |
| ; Writes certificate to Receipts region of WORM log | |
| ; Layer 14: Binary Layout (Fixed, Verified) | |
| ; 0x0000_0000 - 0x0000_FFFF : Boot ROM (immutable, contains verifier) | |
| ; 0x0001_0000 - 0x000F_FFFF : Weight Region (read-only, signed manifest) | |
| ; 0x0010_0000 - 0x001F_FFFF : Code Region (this binary, max 1MB) | |
| ; 0x0020_0000 - 0x00FF_FFFF : KV Cache Region (dynamic, managed by scheduler) | |
| ; 0x0100_0000 - 0x01FF_FFFF : Activation Scratch (bounded by B_act) | |
| ; 0x0200_0000 - 0x02FF_FFFF : WORM Log (append-only, max 16MB) | |
| ; 0x0300_0000 - 0x0300_0FFF : Register File (memory-mapped) | |
| ; 0x0300_1000 - 0x0300_10FF : Control Unit State | |
| ; 0x0300_2000 - 0x0300_2FFF : Receipts / Certificates | |