Improved division

This commit is contained in:
Eduard Urbach 2024-08-04 00:35:33 +02:00
parent 745df4df2a
commit f2858b1dc2
Signed by: eduard
GPG key ID: 49226B848C78F6C8
3 changed files with 36 additions and 60 deletions

View file

@ -24,10 +24,16 @@ func (f *Function) ExecuteRegisterNumber(operation token.Token, register cpu.Reg
f.RegisterNumber(asm.MUL, register, number)
case token.Div, token.DivAssign:
f.RegisterNumber(asm.DIV, register, number)
tmp := f.NewRegister()
f.RegisterNumber(asm.MOVE, tmp, number)
f.RegisterRegister(asm.DIV, register, tmp)
f.FreeRegister(tmp)
case token.Mod, token.ModAssign:
f.RegisterNumber(asm.MODULO, register, number)
tmp := f.NewRegister()
f.RegisterNumber(asm.MOVE, tmp, number)
f.RegisterRegister(asm.MODULO, register, tmp)
f.FreeRegister(tmp)
case token.And, token.AndAssign:
f.RegisterNumber(asm.AND, register, number)