Added more tests

This commit is contained in:
Eduard Urbach 2025-02-22 13:58:07 +01:00
parent c088697446
commit df782ae1cb
Signed by: akyoto
GPG Key ID: C874F672B1AF20C0
8 changed files with 74 additions and 41 deletions

View File

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

View File

@ -25,15 +25,10 @@ func (f *Function) ExecuteRegisterRegister(operation token.Token, register cpu.R
f.RegisterRegister(asm.MUL, register, operand)
case token.Div, token.DivAssign:
if register != x86.RAX {
f.SaveRegister(x86.RAX)
}
f.SaveRegister(x86.RDX)
f.RegisterRegister(asm.DIV, register, operand)
case token.Mod, token.ModAssign:
f.SaveRegister(x86.RAX)
f.SaveRegister(x86.RDX)
f.RegisterRegister(asm.MODULO, register, operand)

View File

@ -0,0 +1,17 @@
main() {
f(10)
}
f(x int) {
y := x
x -= 2
assert x < y
x += 2
assert x == y
x *= 2
assert x > y
x /= 2
assert x == y
x %= 2
assert x < 2
}

View File

@ -0,0 +1,18 @@
main() {
f(10)
}
f(x int) {
y := x
num := 2
x -= num
assert x < y
x += num
assert x == y
x *= num
assert x > y
x /= num
assert x == y
x %= num
assert x < num
}

View File

@ -1,30 +0,0 @@
main() {
number(10)
register(10)
}
number(x int) {
y := x
x -= 1
assert x < y
x += 1
assert x == y
x *= 2
assert x > y
x /= 2
assert x == y
}
register(x int) {
y := x
num := 1
x -= num
assert x < y
x += num
assert x == y
num = 2
x *= num
assert x > y
x /= num
assert x == y
}

View File

@ -0,0 +1,17 @@
main() {
f(10)
}
f(x int) {
y := x
x = x - 2
assert x < y
x = x + 2
assert x == y
x = x * 2
assert x > y
x = x / 2
assert x == y
x = x % 2
assert x < 2
}

View File

@ -0,0 +1,18 @@
main() {
f(10)
}
f(x int) {
y := x
num := 2
x = x - num
assert x < y
x = x + num
assert x == y
x = x * num
assert x > y
x = x / num
assert x == y
x = x % num
assert x < num
}

View File

@ -28,7 +28,10 @@ var programs = []struct {
{"return-multi", 0},
{"math", 0},
{"precedence", 0},
{"operator-assign", 0},
{"operator-number", 0},
{"operator-variable", 0},
{"operator-assign-number", 0},
{"operator-assign-variable", 0},
{"const", 0},
{"escape-rune", 0},
{"escape-string", 0},