summaryrefslogtreecommitdiff
path: root/projects/12/MemoryTest/Memory.vm
diff options
context:
space:
mode:
Diffstat (limited to 'projects/12/MemoryTest/Memory.vm')
-rw-r--r--projects/12/MemoryTest/Memory.vm362
1 files changed, 362 insertions, 0 deletions
diff --git a/projects/12/MemoryTest/Memory.vm b/projects/12/MemoryTest/Memory.vm
new file mode 100644
index 0000000..c7410fc
--- /dev/null
+++ b/projects/12/MemoryTest/Memory.vm
@@ -0,0 +1,362 @@
+function Memory.init 0
+push constant 0
+pop static 0
+push constant 2048
+pop static 1
+push constant 0
+push static 1
+add
+push constant 1
+neg
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 1
+push static 1
+add
+push constant 14334
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 0
+return
+function Memory.peek 0
+push argument 0
+push static 0
+add
+pop pointer 1
+push that 0
+return
+function Memory.poke 0
+push argument 0
+push static 0
+add
+push argument 1
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 0
+return
+function Memory.alloc 3
+push constant 0
+pop local 0
+push argument 0
+push constant 2
+add
+pop local 1
+label WHILE_EXP0
+push local 0
+push constant 1
+neg
+gt
+push local 0
+push constant 1
+add
+push static 1
+add
+pop pointer 1
+push that 0
+push local 1
+lt
+and
+not
+if-goto WHILE_END0
+push local 0
+push static 1
+add
+pop pointer 1
+push that 0
+pop local 0
+goto WHILE_EXP0
+label WHILE_END0
+push local 0
+push constant 1
+neg
+eq
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+push constant 34
+call String.new 1
+push constant 73
+call String.appendChar 2
+push constant 110
+call String.appendChar 2
+push constant 115
+call String.appendChar 2
+push constant 117
+call String.appendChar 2
+push constant 102
+call String.appendChar 2
+push constant 102
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 99
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 110
+call String.appendChar 2
+push constant 116
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 115
+call String.appendChar 2
+push constant 112
+call String.appendChar 2
+push constant 97
+call String.appendChar 2
+push constant 99
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 102
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 114
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 97
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 99
+call String.appendChar 2
+push constant 97
+call String.appendChar 2
+push constant 116
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 110
+call String.appendChar 2
+push constant 33
+call String.appendChar 2
+call String.println 1
+pop temp 0
+push constant 1
+call Sys.error 1
+pop temp 0
+push constant 1
+neg
+return
+goto IF_END0
+label IF_FALSE0
+push local 0
+push constant 1
+add
+push static 1
+add
+push local 0
+push constant 1
+add
+push static 1
+add
+pop pointer 1
+push that 0
+push local 1
+sub
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push local 0
+push local 0
+push constant 1
+add
+push static 1
+add
+pop pointer 1
+push that 0
+add
+push constant 2
+add
+pop local 2
+push local 2
+push static 1
+add
+push local 0
+push static 1
+add
+pop pointer 1
+push that 0
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push local 0
+push static 1
+add
+push local 2
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push local 2
+push constant 1
+add
+push static 1
+add
+push argument 0
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push static 1
+push local 2
+add
+push constant 2
+add
+return
+label IF_END0
+function Memory.deAlloc 3
+push constant 0
+pop local 2
+push local 2
+push static 1
+add
+pop pointer 1
+push that 0
+pop local 1
+push argument 0
+push static 1
+sub
+push constant 2
+sub
+pop local 0
+label WHILE_EXP0
+push local 1
+push constant 1
+neg
+gt
+push local 1
+push local 0
+eq
+not
+and
+not
+if-goto WHILE_END0
+push local 1
+pop local 2
+push local 1
+push static 1
+add
+pop pointer 1
+push that 0
+pop local 1
+goto WHILE_EXP0
+label WHILE_END0
+push local 1
+push constant 1
+neg
+eq
+if-goto IF_TRUE0
+goto IF_FALSE0
+label IF_TRUE0
+push constant 23
+call String.new 1
+push constant 84
+call String.appendChar 2
+push constant 104
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 109
+call String.appendChar 2
+push constant 112
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 115
+call String.appendChar 2
+push constant 115
+call String.appendChar 2
+push constant 105
+call String.appendChar 2
+push constant 98
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 104
+call String.appendChar 2
+push constant 97
+call String.appendChar 2
+push constant 112
+call String.appendChar 2
+push constant 112
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 110
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 100
+call String.appendChar 2
+call String.println 1
+pop temp 0
+push constant 1
+call Sys.error 1
+pop temp 0
+push constant 0
+return
+goto IF_END0
+label IF_FALSE0
+push local 2
+push static 1
+add
+push local 1
+push static 1
+add
+pop pointer 1
+push that 0
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push local 2
+push constant 1
+add
+push static 1
+add
+push local 2
+push static 1
+add
+pop pointer 1
+push that 0
+push local 2
+sub
+push constant 2
+sub
+pop temp 0
+pop pointer 1
+push temp 0
+pop that 0
+push constant 0
+return
+label IF_END0