Finish the pass-3 address path: count-mode sizing with zero mismatch, final section and method addresses in the MAP, unresolved-reference diagnostics, deterministic PRGs, and a real source file running in x128.
src/compiler/flow.s, emit.s, sizing.s, parser.s, diagnostics.ssrc/compiler/output.s, src/common/formats.inc, diagcat.inctests/compiler/counter.n8, tests/compiler/counter-test.stests/runtime/class-test.s, tests/parser/unresolved.n8scripts/build-*.ps1, scripts/verify-*.ps1docs/decisions.md, docs/architecture.md, docs/memory-map.md,
docs/diagnostics.mdsizing.s measures each routine in count mode so pass 2 and pass 3
produce identical lengths and label offsets; sz_mismatch is 0.JMP/JSR label fixups; relative branches stay
offset-based. counter.n8 runs from CODE 1C4F with total = 15.ENTRY and SECTION records carry final addresses; class records
and METHOD entry addresses are emitted and checked by the class fixture.tests/parser/unresolved.n8 reports exactly
one SEM_UNKNOWN_NAME (E61) and no bad-operand follow-up.COUNTER.PRG and
COUNTB.PRG compare equal.COLLIDE.PRG/COLLIDE.MAP unchanged and leaves no output after abort.counter.n8 compiles from source and runs in x128 with total = 15.flow.s now resolves absolute JMP/JSR operands against fl_code_base;
ordinary fixtures keep the default cg_code base.sizing.s computes PRG_ENTRY_ADDR + bytes-before-CODE and installs it for
the emitting pass. sz_capture/sz_verify compare code length, entry
offset, per-routine sizes, and all label offsets.emit.s records routine sizes in em_routine_sizes and selects count mode
through em_count. parse_file clears count mode, diagnostic suppression,
and any base request; parse_file_sized opts into the counted path.diag_suppress prevents duplicate diagnostics during the emitting pass.
RES_SIZE_MISMATCH (E228) reports a count/emit disagreement.output.s/formats.inc add bounded METHOD name address MAP records after
class records. The class fixture checks METHOD DESTROY and METHOD STUB.unresolved.n8 parser fixture and the matching
SEM_UNKNOWN_NAME expectation.unresolved.n8 with exactly one diagnostic.sz_mismatch = 0; MAP ENTRY 1C0D,
START 1C0D 0042, CODE 1C4F 00AF; COUNTER.PRG and COUNTB.PRG
byte-identical; generated PRG reports total = 15.CLASS EMPTY, CLASS BOX, METHOD DESTROY 2A56,
METHOD STUB 2A57; all descriptor/MAP flags pass.em_entry remains an
offset; general runtime startup and frame sizing remain separate work.Powered by TurnKey Linux.