diff options
Diffstat (limited to 'projects/12/MemoryTest/Memory.vm')
-rw-r--r-- | projects/12/MemoryTest/Memory.vm | 362 |
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 |