Improved division
This commit is contained in:
parent
745df4df2a
commit
f2858b1dc2
3 changed files with 36 additions and 60 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue