Files
symphony_stdlib/isa
PleegWat 2f09320fa5 Add optimization for arbitrary aligned values
Any value with 16 or less significant bits but larger than 64k is loaded
in one fewer cycle
2026-09-05 15:39:55 +02:00
..
2026-09-05 15:36:54 +02:00
2026-09-05 15:36:54 +02:00

Symphony ISA specs for use in stdlib

default.isa

The stock game ISA. Production code must comply to this. Taken from symphony_11_functions in game version 2.1.330A

test.isa

ISA with additional instructions. These additional instructions may be used in the tests directory only. Some of these instructions require hardware changes.

Labels in more instructions

cmp, load, and store instructions (but not pload and pstore) now also accept labels.

qcall %a(label)

Performs a jump-and-link function call, with label size up to 32 bits.

HARDWARE: Store PC+4 in the result register when in jump mode.

li %a(register) %b:U32(immediate | label)

Loads an immediate up to 32 bits long

HARDWARE: No requirements

halt%c(condition)

Halts if flags matches the condition.

HARDWARE: Halt if instruction bit 31 is set AND the condition block is true.

condition
""     1000
".all" 1000
".e"   0001
".ne"  1001
".b"   0010
".ae"  1010
".be"  0011
".a"   1011
".l"   0100
".ge"  1100
".le"  0101
".g"   1101