diff --git a/README.md b/README.md index d48bd05..2e5e22c 100644 --- a/README.md +++ b/README.md @@ -165,8 +165,8 @@ This is what generates expressions from tokens. ### Architecture - [ ] arm64 -- [ ] wasm -- [x] x86-64 +- [ ] riscv +- [x] x64 ### Platform diff --git a/src/build/arch/arm64/Registers.go b/src/build/arch/arm64/Registers.go index 39c87b6..a00c709 100644 --- a/src/build/arch/arm64/Registers.go +++ b/src/build/arch/arm64/Registers.go @@ -1,4 +1,4 @@ -package register +package arm64 import "git.akyoto.dev/cli/q/src/build/cpu" diff --git a/src/build/arch/riscv/Registers.go b/src/build/arch/riscv/Registers.go new file mode 100644 index 0000000..846b936 --- /dev/null +++ b/src/build/arch/riscv/Registers.go @@ -0,0 +1,40 @@ +package riscv + +import "git.akyoto.dev/cli/q/src/build/cpu" + +const ( + X0 cpu.Register = iota + X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10 + X11 + X12 + X13 + X14 + X15 + X16 + X17 + X18 + X19 + X20 + X21 + X22 + X23 + X24 + X25 + X26 + X27 + X28 + X29 + X30 + X31 +) + +var SyscallArgs = []cpu.Register{X10, X11, X12, X13, X14, X15, X16} diff --git a/src/build/arch/x64/encode.go b/src/build/arch/x64/encode.go index 570076d..1f45001 100644 --- a/src/build/arch/x64/encode.go +++ b/src/build/arch/x64/encode.go @@ -29,6 +29,5 @@ func encode(code []byte, mod AddressMode, reg cpu.Register, rm cpu.Register, num code = append(code, opCodes...) code = append(code, ModRM(mod, byte(reg), byte(rm))) - return code }