forked from TCShenanigans/symphony_stdlib
44 lines
1.0 KiB
Markdown
44 lines
1.0 KiB
Markdown
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
|
|
```
|