1.8 KiB
RISC combined instruction set
goal: a semi-efficient insatruction set that offers few instructions that offer the combined functions of conventional risc instuctions.
as such most instructions could be pipelined, I don't know how to feel about that
Memory Operations
when accessing memory trough an address a consecutive pair of registers is used,
each consecutive pair of registers is given a name, for brevity a pair is
always referred to as A
. The possible pairs are:
- A = R1:R0
- B = R3:R2
- C = R5:R4
- D = R7:R6
- E = R9:R8
- F = R11:R10
- G = R13:R12
- H = R15:R14
- I = R17:R16
- J = R19:R18
- K = R21:R20
- L = R23:R22
- M = R25:R24
- N = R27:R26
- O = R29:R28
- P = R31:R30
LD load value into register
normal loading
syntax: LD Rd, A
action: Rd = [A]
post increment/decrement
syntax: LD Rd, A+q
action: Rd = [A]; A += q
pre increment/decrement
syntax: LD Rd, q+A
action: A += q; Rd = [A]
LDI load immediate into register
syntax: LDI Rd, imm
action: Rd = imm
LDIL load long immediate into register
syntax: LDIL Rd, imm32
action: Rd = imm32
ST store value from register
normal storing
syntax: ST A, Rd
action: [A] = Rd
post increment/decrement
syntax: ST A+q, Rd
action: [A] = Rd; A += q
pre increment/decrement
syntax: ST q+A, Rd
action: A += q; [A] = Rd
STI store immediate into memory
normal store
syntax: STI A, imm
action: [A] = imm
post increment/decrement
syntax: STI A+q, imm
action: [A] = imm; A += q
pre increment/decrement
syntax: STI q+A, imm
action: A += q; [A] = imm
STIL store long immediate into memory
normal store
syntax: STIL A, imm32
action: [A] = imm32
post increment/decrement
syntax: STIL A+q, imm32
action: [A] = imm32; A += q
pre increment/decrement
syntax: STIL q+A, imm32
action: A += q; [A] = imm32