diff options
Diffstat (limited to 'projects/12/StringTest/String.vm')
-rw-r--r-- | projects/12/StringTest/String.vm | 917 |
1 files changed, 917 insertions, 0 deletions
diff --git a/projects/12/StringTest/String.vm b/projects/12/StringTest/String.vm new file mode 100644 index 0000000..36664c1 --- /dev/null +++ b/projects/12/StringTest/String.vm @@ -0,0 +1,917 @@ +function String.new 0 +push constant 3 +call Memory.alloc 1 +pop pointer 0 +push argument 0 +push constant 0 +gt +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push argument 0 +call Array.new 1 +pop this 2 +label IF_FALSE0 +push argument 0 +pop this 0 +push constant 0 +pop this 1 +push pointer 0 +return +function String.dispose 0 +push argument 0 +pop pointer 0 +push this 0 +push constant 0 +gt +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push this 2 +call Array.dispose 1 +pop temp 0 +label IF_FALSE0 +push pointer 0 +call Memory.deAlloc 1 +pop temp 0 +push constant 0 +return +function String.length 0 +push argument 0 +pop pointer 0 +push this 1 +return +function String.charAt 0 +push argument 0 +pop pointer 0 +push argument 1 +push constant 0 +lt +push argument 1 +push constant 1 +add +push this 1 +gt +or +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 34 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +call String.appendChar 2 +push constant 99 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 65 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 100 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 120 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 117 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 102 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 5 +call Sys.error 1 +pop temp 0 +label IF_FALSE0 +push argument 1 +push this 2 +add +pop pointer 1 +push that 0 +return +function String.setCharAt 0 +push argument 0 +pop pointer 0 +push argument 1 +push constant 0 +lt +push argument 1 +push constant 1 +add +push this 1 +gt +or +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 37 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 67 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 65 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 100 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 120 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 117 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 102 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 5 +call Sys.error 1 +pop temp 0 +label IF_FALSE0 +push argument 1 +push this 2 +add +push argument 2 +pop temp 0 +pop pointer 1 +push temp 0 +pop that 0 +push constant 0 +return +function String.appendChar 0 +push argument 0 +pop pointer 0 +push this 1 +push this 0 +eq +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 38 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +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 100 +call String.appendChar 2 +push constant 67 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 99 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 100 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 109 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 120 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 108 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 5 +call Sys.error 1 +pop temp 0 +label IF_FALSE0 +push this 1 +push this 2 +add +push argument 1 +pop temp 0 +pop pointer 1 +push temp 0 +pop that 0 +push this 1 +push constant 1 +add +pop this 1 +push pointer 0 +return +function String.eraseLastChar 0 +push argument 0 +pop pointer 0 +push this 1 +push constant 0 +eq +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 46 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 76 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 67 +call String.appendChar 2 +push constant 104 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 115 +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 114 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 100 +call String.appendChar 2 +push constant 121 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 109 +call String.appendChar 2 +push constant 112 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 121 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 5 +call Sys.error 1 +pop temp 0 +label IF_FALSE0 +push this 1 +push constant 1 +sub +pop this 1 +push constant 0 +return +function String.intValue 5 +push argument 0 +pop pointer 0 +push constant 0 +pop local 0 +push constant 0 +push this 2 +add +pop pointer 1 +push that 0 +push constant 45 +eq +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 1 +pop local 1 +push constant 0 +not +pop local 3 +goto IF_END0 +label IF_FALSE0 +push constant 0 +pop local 1 +push constant 0 +pop local 3 +label IF_END0 +push local 1 +push this 2 +add +pop pointer 1 +push that 0 +pop local 2 +push local 2 +push constant 48 +lt +push local 2 +push constant 57 +gt +or +if-goto IF_TRUE1 +goto IF_FALSE1 +label IF_TRUE1 +push constant 3 +call Sys.error 1 +pop temp 0 +push constant 46 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 86 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 108 +call String.appendChar 2 +push constant 117 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 116 +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 110 +call String.appendChar 2 +push constant 112 +call String.appendChar 2 +push constant 117 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 100 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 117 +call String.appendChar 2 +push constant 109 +call String.appendChar 2 +push constant 98 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +label IF_FALSE1 +push constant 0 +pop local 4 +label WHILE_EXP0 +push local 4 +not +push local 1 +push this 1 +lt +and +not +if-goto WHILE_END0 +push local 1 +push this 2 +add +pop pointer 1 +push that 0 +pop local 2 +push local 2 +push constant 47 +gt +push local 2 +push constant 58 +lt +and +if-goto IF_TRUE2 +goto IF_FALSE2 +label IF_TRUE2 +push local 0 +push constant 10 +call Math.multiply 2 +push local 2 +push constant 48 +sub +add +pop local 0 +goto IF_END2 +label IF_FALSE2 +push constant 0 +not +pop local 4 +label IF_END2 +push local 1 +push constant 1 +add +pop local 1 +goto WHILE_EXP0 +label WHILE_END0 +push local 3 +if-goto IF_TRUE3 +goto IF_FALSE3 +label IF_TRUE3 +push local 0 +neg +return +goto IF_END3 +label IF_FALSE3 +push local 0 +return +label IF_END3 +function String.setInt 4 +push argument 0 +pop pointer 0 +push argument 1 +push constant 0 +lt +if-goto IF_TRUE0 +goto IF_FALSE0 +label IF_TRUE0 +push constant 0 +not +pop local 3 +push constant 2 +pop this 1 +goto IF_END0 +label IF_FALSE0 +push constant 0 +pop local 3 +push constant 1 +pop this 1 +label IF_END0 +push argument 1 +call Math.abs 1 +pop local 0 +push local 0 +push constant 9999 +gt +if-goto IF_TRUE1 +goto IF_FALSE1 +label IF_TRUE1 +push this 1 +push constant 4 +add +pop this 1 +goto IF_END1 +label IF_FALSE1 +push local 0 +push constant 999 +gt +if-goto IF_TRUE2 +goto IF_FALSE2 +label IF_TRUE2 +push this 1 +push constant 3 +add +pop this 1 +goto IF_END2 +label IF_FALSE2 +push local 0 +push constant 99 +gt +if-goto IF_TRUE3 +goto IF_FALSE3 +label IF_TRUE3 +push this 1 +push constant 2 +add +pop this 1 +goto IF_END3 +label IF_FALSE3 +push local 0 +push constant 9 +gt +if-goto IF_TRUE4 +goto IF_FALSE4 +label IF_TRUE4 +push this 1 +push constant 1 +add +pop this 1 +label IF_FALSE4 +label IF_END3 +label IF_END2 +label IF_END1 +push this 1 +push this 0 +gt +if-goto IF_TRUE5 +goto IF_FALSE5 +label IF_TRUE5 +push constant 45 +call String.new 1 +push constant 83 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 46 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 101 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 73 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 58 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 118 +call String.appendChar 2 +push constant 97 +call String.appendChar 2 +push constant 108 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 115 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 111 +call String.appendChar 2 +push constant 32 +call String.appendChar 2 +push constant 98 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 103 +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 116 +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 115 +call String.appendChar 2 +push constant 116 +call String.appendChar 2 +push constant 114 +call String.appendChar 2 +push constant 105 +call String.appendChar 2 +push constant 110 +call String.appendChar 2 +push constant 103 +call String.appendChar 2 +push constant 33 +call String.appendChar 2 +call Output.printString 1 +pop temp 0 +push constant 5 +call Sys.error 1 +pop temp 0 +label IF_FALSE5 +push local 0 +push constant 0 +eq +if-goto IF_TRUE6 +goto IF_FALSE6 +label IF_TRUE6 +push pointer 0 +push constant 0 +push constant 48 +call String.setCharAt 3 +pop temp 0 +push constant 0 +return +label IF_FALSE6 +push local 3 +if-goto IF_TRUE7 +goto IF_FALSE7 +label IF_TRUE7 +push pointer 0 +push constant 0 +push constant 45 +call String.setCharAt 3 +pop temp 0 +label IF_FALSE7 +push this 1 +push constant 1 +sub +pop local 1 +label WHILE_EXP0 +push local 0 +push constant 0 +gt +not +if-goto WHILE_END0 +push local 0 +push constant 10 +call Math.divide 2 +pop local 2 +push pointer 0 +push local 1 +push local 0 +push local 2 +push constant 10 +call Math.multiply 2 +sub +push constant 48 +add +call String.setCharAt 3 +pop temp 0 +push local 2 +pop local 0 +push local 1 +push constant 1 +sub +pop local 1 +goto WHILE_EXP0 +label WHILE_END0 +push constant 0 +return +function String.newLine 0 +push constant 128 +return +function String.backSpace 0 +push constant 129 +return +function String.doubleQuote 0 +push constant 34 +return |