Added prime numbers example

This commit is contained in:
2024-08-04 16:17:33 +02:00
parent c8045cb4fb
commit 3e3567cd32
4 changed files with 58 additions and 0 deletions

View File

@ -1,6 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/build/errors"
@ -24,12 +25,16 @@ func (f *Function) ExecuteRegisterNumber(operation token.Token, register cpu.Reg
f.RegisterNumber(asm.MUL, register, number)
case token.Div, token.DivAssign:
f.SaveRegister(x64.RAX)
f.SaveRegister(x64.RDX)
tmp := f.NewRegister()
f.RegisterNumber(asm.MOVE, tmp, number)
f.RegisterRegister(asm.DIV, register, tmp)
f.FreeRegister(tmp)
case token.Mod, token.ModAssign:
f.SaveRegister(x64.RAX)
f.SaveRegister(x64.RDX)
tmp := f.NewRegister()
f.RegisterNumber(asm.MOVE, tmp, number)
f.RegisterRegister(asm.MODULO, register, tmp)

View File

@ -1,6 +1,7 @@
package core
import (
"git.akyoto.dev/cli/q/src/build/arch/x64"
"git.akyoto.dev/cli/q/src/build/asm"
"git.akyoto.dev/cli/q/src/build/cpu"
"git.akyoto.dev/cli/q/src/build/errors"
@ -24,9 +25,13 @@ func (f *Function) ExecuteRegisterRegister(operation token.Token, register cpu.R
f.RegisterRegister(asm.MUL, register, operand)
case token.Div, token.DivAssign:
f.SaveRegister(x64.RAX)
f.SaveRegister(x64.RDX)
f.RegisterRegister(asm.DIV, register, operand)
case token.Mod, token.ModAssign:
f.SaveRegister(x64.RAX)
f.SaveRegister(x64.RDX)
f.RegisterRegister(asm.MODULO, register, operand)
case token.And, token.AndAssign: