D096 - Operand layout is a property of the opcode, not of the encoding family

decided ยท 2026-08-19

Recorded because it invalidated the premise of a piece of work, and the premise looked obviously right.

The plan was to declare an operand layout for each of the seventeen encoding families, the way each already declares an opcode position and a width. Layouts were written for all seventeen. The differential test rejected ten of them, in two distinct ways:

So a per-family layout can only describe a family whose shape is fixed. Seven qualify - the scalar and vector ALU families, plus the branch family which was checked and genuinely carries no register operand.

The other ten are left with no layout at all rather than an approximate one. That is the whole point of operands_decoded: an instruction reporting no operands because nobody has taught the decoder its family is a different claim from one that takes none, and a translator must be able to tell them apart.

What it would take. Per-opcode operand data, derived from observation the way the mnemonic table already is (D090) - the reference prints the operands, so their number and kind can be read off rather than transcribed. That is a different mechanism from the per-family table and is left for its own piece of work.

Two smaller findings, both caught by the same test: