nC_PROGRAMMING LANGUAGE

Machine code and control flow

[@machine] represents instructions with typed structure. Operands, registers, labels and terminators must remain coherent from parsing through IR. Extending materialization must preserve those relationships.

A label identifies a position or block in the supported model. A branch connects control-flow paths. Conditional transfers preserve the meaning of the flags or operations they consume. Native emission must retain the dependency that made the branch valid in the earlier representation.

Terminators delimit what can execute after a block. An instruction placed after a final needs defined reachability. Accepting a block without its required terminator shifts a control-flow inconsistency into the backend.

checked_add_overflow_machine.n checks an explicit overflow branch. It does not imply automatic overflow protection for every arithmetic operation in the language.

Object .nm modules use the machine CLI. In retained Stage0, machine emit-ir is the correct entry point for object_elf64.nm; general emit-ir is not interchangeable with it.

An ISA extension requires operations, operand types, restrictions, emission rules and tests. A target name or instruction table is not evidence of execution on hardware. Physical support requires separate evidence for that profile.

View source on GitHub ↗PDF manual ↓

Search nC