3.3 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
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
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
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
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
Arithmetic operations
ADD
ADDC
ADDI
ADDIC
MLA Multiply and add
syntax: MLA A, Ra, Rb, Rc
action: A = Rc + (Ra * Rb)
MLAI Multiply and add immediate
syntax: MLAI A, Ra, Rb, imm
action: A = imm + (Ra * Rb)
MLIA Multiply immediate and add
syntax: MLIA A, Ra, imm, Rc
action: A = Rc + (Ra * imm)
MLAC Multiply and add with carry
syntax: MLAC A, Ra, Rb, Rc
action: A = F.C + Rc + (Ra * Rb)
MLAIC Multiply and add immediate with carry
syntax: MLAIC A, Ra, Rb, imm
action: A = F.C + imm + (Ra * Rb)
MLIAC Multiply immediate and add with carry
syntax: MLIAC A, Ra, imm, Rc
action: A = F.C + Rc + (Ra * imm)
SMLA Signed multiply and add
syntax: SMLA A, Ra, Rb, Rc
action: A = Rc + (Ra * Rb)
SMLAI Signed multiply and add immediate
syntax: SMLAI A, Ra, Rb, imm
action: A = imm + (Ra * Rb)
SMLIA Signed multiply immediate and add
syntax: SMLIA A, Ra, imm, Rc
action: A = Rc + (Ra * imm)
SMLAC Signed multiply and add with carry
syntax: SMLAC A, Ra, Rb, Rc
action: A = F.C + Rc + (Ra * Rb)
SMLAIC Signed multiply and add immediate with carry
syntax: SMLAIC A, Ra, Rb, imm
action: A = F.C + imm + (Ra * Rb)
SMLIAC Signed multiply immediate and add with carry
syntax: SMLIAC A, Ra, imm, Rc
action: A = F.C + Rc + (Ra * imm)