Improved documentation

This commit is contained in:
2025-03-28 15:35:29 +01:00
parent 33b91e7bf4
commit 0bc52fb673
3 changed files with 36 additions and 35 deletions

View File

@ -7,7 +7,7 @@ func MulRegisterRegister(destination cpu.Register, multiplicand cpu.Register, mu
return 0b10011011000<<21 | reg4(destination, multiplicand, multiplier, ZR) return 0b10011011000<<21 | reg4(destination, multiplicand, multiplier, ZR)
} }
// MultiplySubtract multiplies `multiplicand` with `multiplier`, subtracts `minuend` and saves the result in `destination`. // MultiplySubtract multiplies `multiplicand` with `multiplier`, subtracts the product from `minuend` and saves the result in `destination`.
func MultiplySubtract(destination cpu.Register, multiplicand cpu.Register, multiplier cpu.Register, minuend cpu.Register) uint32 { func MultiplySubtract(destination cpu.Register, multiplicand cpu.Register, multiplier cpu.Register, minuend cpu.Register) uint32 {
return 0b10011011000<<21 | 1<<15 | reg4(destination, multiplicand, multiplier, minuend) return 0b10011011000<<21 | 1<<15 | reg4(destination, multiplicand, multiplier, minuend)
} }

View File

@ -34,6 +34,7 @@ func TestMultiplySubtract(t *testing.T) {
Code uint32 Code uint32
}{ }{
{arm.X0, arm.X1, arm.X2, arm.X3, 0x9B028C20}, {arm.X0, arm.X1, arm.X2, arm.X3, 0x9B028C20},
{arm.X3, arm.X0, arm.X2, arm.X1, 0x9B028403},
} }
for _, pattern := range usagePatterns { for _, pattern := range usagePatterns {

View File

@ -3,41 +3,41 @@ package riscv
import "git.urbach.dev/cli/q/src/cpu" import "git.urbach.dev/cli/q/src/cpu"
const ( const (
X0 cpu.Register = iota Zero cpu.Register = iota // hardwired zero
X1 RA // return address
X2 SP // stack pointer
X3 GP // global pointer
X4 TP // thread pointer
X5 T0 // temporary register 0
X6 T1 // temporary register 1
X7 T2 // temporary register 2
X8 S0 // saved register 0 / frame pointer
X9 S1 // saved register 1
X10 A0 // function argument 0 / return value 0
X11 A1 // function argument 1 / return value 1
X12 A2 // function argument 2
X13 A3 // function argument 3
X14 A4 // function argument 4
X15 A5 // function argument 5
X16 A6 // function argument 6
X17 A7 // function argument 7
X18 S2 // saved register 2
X19 S3 // saved register 3
X20 S4 // saved register 4
X21 S5 // saved register 5
X22 S6 // saved register 6
X23 S7 // saved register 7
X24 S8 // saved register 8
X25 S9 // saved register 9
X26 S10 // saved register 10
X27 S11 // saved register 11
X28 T3 // temporary register 3
X29 T4 // temporary register 4
X30 T5 // temporary register 5
X31 T6 // temporary register 6
) )
var ( var (
SyscallInputRegisters = []cpu.Register{X17, X10, X11, X12, X13, X14, X15, X16} SyscallInputRegisters = []cpu.Register{A7, A0, A1, A2, A3, A4, A5, A6}
SyscallOutputRegisters = []cpu.Register{X10, X11} SyscallOutputRegisters = []cpu.Register{A0, A1}
) )