Appendix A: Opcode Map (Numeric)

This appendix lists every base-opcode byte $00..$FF with its mnemonic and operand shape, in numeric order. It is the encoding-first companion to the function-grouped Chapter 7. The mode bits (bits 7,6) select the addressing-mode form: $0x regVal, $4x immVal, $8x regAddr, $Cx immAddr, except in the row-packed condition and unary families, where the two high bits select a row (Chapter 6). reserved rows decode as the illegal-instruction trap when reached as an opcode (cause 0); $3F/$7F/$BF are the reserved full-byte-dispatch / escape-prefix band and $FF is BRK.

The definitive per-byte table is maintained in the repository README.md under "Opcodes Sorted Numerically" and mirrors src/maize_cpu.h. The summary below groups the map by base slot; consult Chapter 7 or Chapter 8 for each instruction's full entry.

A.1 Base slots $00..$3F (mode bits select the form)

BaseMnemonicShapeForms ($0x/$4x/$8x/$Cx)
$00HALTzero-op$00 (privileged)
$01CP / LDreg/memCP $01 regVal, $41 immVal; LD $81 regAddr, $C1 immAddr
$02STstore$02 regVal regAddr, $42 immVal regAddr
$03ADDALU$03 $43 $83 $C3
$04SUBALU$04 $44 $84 $C4
$05MULALU$05 $45 $85 $C5
$06DIVALU$06 $46 $86 $C6
$07MODALU$07 $47 $87 $C7
$08ANDALU$08 $48 $88 $C8
$09ORALU$09 $49 $89 $C9
$0ANORALU$0A $4A $8A $CA
$0BNANDALU$0B $4B $8B $CB
$0CXORALU$0C $4C $8C $CC
$0DSHLALU$0D $4D $8D $CD
$0ESHRALU$0E $4E $8E $CE
$0FCMPALU$0F $4F $8F $CF
$10TESTALU$10 $50 $90 $D0
$11CMPXCHG3-op$11 $51 $91 $D1
$12LEA3-op$12 $52 $92 $D2
$13CPZ / LDZcopy / load$13 CPZ regVal, $53 CPZ immVal; $93 LDZ regAddr, $D3 LDZ immAddr (zero-extending load, maize-204)
$14OUTport$14 $54 $94 $D4 (privileged)
$15FGETCSR / FSETCSRFP regFGETCSR $15, FSETCSR $55 ($95/$D5 reserved)
$16JMPjump$16 $56 $96 $D6
$17Jcc column 0branchJZ $17, JB $57, JGE $97, JAE $D7
$18Jcc column 1branchJNZ $18, JGT $58, JLE $98, JP $D8
$19Jcc column 2branchJLT $19, JA $59, JBE $99 ($D9 reserved)
$1AFADDFP ALU$1A $5A $9A $DA
$1BFSUBFP ALU$1B $5B $9B $DB
$1CFMULFP ALU$1C $5C $9C $DC
$1DCALLcall$1D $5D $9D $DD
$1EOUTRport$1E $5E $9E $DE (privileged)
$1FINport$1F $5F $9F $DF (privileged)
$20PUSHstack$20 regVal, $60 immVal
$21FDIVFP ALU$21 $61 $A1 $E1
$22FSQRT / FNEG / FABSFP unary$22 / $62 / $A2 ($E2 reserved)
$23FMADDFP 3-op$23 $63 $A3 $E3
$24INT / SETSYSG / CLRSYSGinterrupt / zero-opINT $24 regVal, $64 immVal (privileged; dispatch deferred); SETSYSG $A4, CLRSYSG $E4 (v1.x syscall-provider select, card maize-24)
$25FMSUBFP 3-op$25 $65 $A5 $E5
$26MOVTCR / MOVFCRcontrol-registerMOVTCR $26 regVal-imm, $66 immVal-imm; MOVFCR $A6 immVal-reg ($E6 reserved) (privileged; control-register access, card maize-180)
$27RET / IRET / NOPzero-opRET $27, IRET $67, NOP $A7 ($E7 reserved)
$28TLBINV / TLBINVApaging / MMUTLBINV $28 zero-op (flush all), TLBINVA $68 regVal (flush one, VA in the register) ($A8/$E8 reserved) (privileged; live under Sv48, card maize-194)
$29SETINT / CLRINT / SETCRY / CLRCRYzero-op$29 / $69 / $A9 / $E9
$2AFCMPFP compare$2A $6A $AA $EA
$2BSETcc column 0setSETZ $2B, SETB $6B, SETGE $AB, SETAE $EB
$2CSETcc column 1setSETNZ $2C, SETGT $6C, SETLE $AC, SETP $EC
$2DSETcc column 2setSETLT $2D, SETA $6D, SETBE $AD ($ED reserved)
$2ESARALU$2E $6E $AE $EE
$2FCMPINDcompare-ind$2F regVal regAddr, $6F immVal regAddr
$30TSTINDtest-ind$30 regVal regAddr, $70 immVal regAddr
$31INC / DEC / NOT / NEGunaryINC $31, DEC $71, NOT $B1, NEG $F1
$32CLR / POPunaryCLR $32, POP $72 ($B2/$F2 reserved)
$33FMIN / FMAXFP min/maxFMIN $33, FMAX $73 ($B3/$F3 reserved)
$34SYSsyscall$34 regVal, $74 immVal (user-callable; trap cause 7)
$35UDIVALU$35 $75 $B5 $F5
$36UMODALU$36 $76 $B6 $F6
$37reserved-SMP / memory-ordering primitives (reserved)
$38reserved-versioning / capability query (reserved)
$39FCVTFF / FCVTFS / FCVTFUFP convert$39 / $79 / $B9 ($F9 reserved)
$3AFCVTSF / FCVTUFFP convert$3A / $7A ($BA/$FA reserved)
$3BADCALU$3B $7B $BB $FB
$3CSBBALU$3C $7C $BC $FC
$3DMULW3-op$3D $7D $BD $FD
$3EUMULW3-op$3E $7E $BE $FE
$3Freserved-full-byte-dispatch / escape-prefix band ($3F/$7F/$BF)

A.2 The standalone high-byte encodings

A few instructions occupy a single fixed byte rather than a base-slot family:

ByteMnemonicShape
$E0XCHGreg reg
$E4CLRSYSGzero-op (v1.x syscall-provider select, row 3 of the $24 slot; card maize-24)
$FFBRKzero-op (breakpoint trap, cause 3)

A.3 Reserved bytes

Every byte not assigned above decodes as reserved. Reached as an opcode, a reserved byte raises the illegal-instruction trap (cause 0, subcode 0); an unallocated condition encoding in the Jcc / SETcc families raises cause 0 subcode 1. The full byte-by-byte enumeration, including each reserved row's earmark, is the repository README "Opcodes Sorted Numerically" table and the Reserved Space chapter.