Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/development/compiler/crates/nocter-arm64/README.md

nocter-arm64

Responsibility

Select, allocate, and encode ARM64 instructions for one immutable machine program.

Contract

The crate consumes target-independent machine operations and runtime roles. It publishes an Arm64Program containing encoded code/data sections and fixup information for the image writer. It does not inspect MIR semantics, declaration identities, source, or package state.

Internal Responsibilities

  • instruction and addressing selection
  • call, aggregate, pack, primitive, error, and region lowering
  • frame layout and register allocation
  • parallel-copy resolution
  • branch, code-to-data, and data-to-data fixups and instruction encoding

Invariants

  • ARM64 selection implements the ABI already classified by Machine.
  • The operation and selected-instruction enums are each classified exactly once. Subsystem helpers receive destructured payloads or a closed subsystem operation, never the complete parent enum.
  • Physical register decisions cannot change semantic value transport.
  • Every primitive expansion is selected by closed runtime role.
  • Data-pointer fixups identify exact eight-byte fields and section-local targets; executable image policy remains outside this crate.
  • A monotonic-counter observation is emitted as an ordered observation, never as a speculative bare system-register read.
  • Encoding is deterministic for one machine program.