Fixed incorrect division results

This commit is contained in:
Eduard Urbach 2025-02-22 12:54:23 +01:00
parent 65b74046e1
commit a75aad52f6
Signed by: eduard
GPG key ID: 49226B848C78F6C8
11 changed files with 150 additions and 94 deletions

View file

@ -25,7 +25,10 @@ func (f *Function) ExecuteRegisterNumber(operation token.Token, register cpu.Reg
f.RegisterNumber(asm.MUL, register, number)
case token.Div, token.DivAssign:
f.SaveRegister(x86.RAX)
if register != x86.RAX {
f.SaveRegister(x86.RAX)
}
f.SaveRegister(x86.RDX)
tmp := f.NewRegister()
f.RegisterNumber(asm.MOVE, tmp, number)