Implemented loads with register offsets

This commit is contained in:
2025-02-19 15:36:42 +01:00
parent 4cff697bf5
commit 1bc845e6f0
13 changed files with 320 additions and 145 deletions

@ -0,0 +1,23 @@
import mem
main() {
a := mem.alloc(4)
i := 0
a[i] = i * 2
i += 1
a[i] = i * 2
i += 1
a[i] = i * 2
i += 1
a[i] = i * 2
i = 0
assert a[i] == i * 2
i += 1
assert a[i] == i * 2
i += 1
assert a[i] == i * 2
i += 1
assert a[i] == i * 2
}

@ -0,0 +1,20 @@
import mem
main() {
a := mem.alloc(4)
assert a[0] == 0
assert a[1] == 0
assert a[2] == 0
assert a[3] == 0
a[0] = 0
a[1] = 1
a[2] = 2
a[3] = 3
assert a[0] == 0
assert a[1] == 1
assert a[2] == 2
assert a[3] == 3
}

@ -1,44 +0,0 @@
import mem
main() {
a := mem.alloc(5)
assert a[0] == 0
assert a[1] == 0
assert a[2] == 0
assert a[3] == 0
assert a[4] == 0
a[0] = 0
a[1] = 1
a[2] = 2
a[3] = 3
a[4] = 4
assert a[0] == 0
assert a[1] == 1
assert a[2] == 2
assert a[3] == 3
assert a[4] == 4
i := 0
a[i] = i * 2
i += 1
a[i] = i * 2
i += 1
a[i] = i * 2
i += 1
a[i] = i * 2
i += 1
a[i] = i * 2
assert a[0] == 0
assert a[1] == 2
assert a[2] == 4
assert a[3] == 6
assert a[4] == 8
}

@ -32,7 +32,6 @@ var programs = []struct {
{"octal", "", "", 0},
{"hexadecimal", "", "", 0},
{"const", "", "", 0},
{"array", "", "", 0},
{"escape-rune", "", "", 0},
{"escape-string", "", "", 0},
{"bitwise-and", "", "", 0},
@ -62,6 +61,8 @@ var programs = []struct {
{"loop-lifetime", "", "", 0},
{"memory-free", "", "", 0},
{"out-of-memory", "", "", 0},
{"array-index-static", "", "", 0},
{"array-index-dynamic", "", "", 0},
{"struct", "", "", 0},
{"len", "", "", 0},
}