koi-vm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. data/.gitignore +2 -0
  2. data/README.rdoc +47 -0
  3. data/Rakefile +42 -0
  4. data/VERSION +1 -0
  5. data/architecture.rdoc +112 -0
  6. data/examples/blastoff.rb +20 -0
  7. data/examples/hello_world.rb +8 -0
  8. data/koi-vm.gemspec +174 -0
  9. data/lib/.gitkeep +0 -0
  10. data/lib/koi-vm/accessors.rb +63 -0
  11. data/lib/koi-vm/core.rb +48 -0
  12. data/lib/koi-vm/exceptions.rb +8 -0
  13. data/lib/koi-vm/helpers.rb +5 -0
  14. data/lib/koi-vm/opcodes/_opcode_constants.rb +58 -0
  15. data/lib/koi-vm/opcodes/_value_constants.rb +10 -0
  16. data/lib/koi-vm/opcodes/comparative_operations/equal.rb +11 -0
  17. data/lib/koi-vm/opcodes/comparative_operations/greater_than.rb +14 -0
  18. data/lib/koi-vm/opcodes/comparative_operations/less_than.rb +14 -0
  19. data/lib/koi-vm/opcodes/control_operations/exit.rb +10 -0
  20. data/lib/koi-vm/opcodes/control_operations/no_op.rb +9 -0
  21. data/lib/koi-vm/opcodes/flow_control_operations/jump.rb +11 -0
  22. data/lib/koi-vm/opcodes/flow_control_operations/jump_if.rb +16 -0
  23. data/lib/koi-vm/opcodes/flow_control_operations/jump_unless.rb +16 -0
  24. data/lib/koi-vm/opcodes/function_operations/call.rb +13 -0
  25. data/lib/koi-vm/opcodes/function_operations/push_function.rb +15 -0
  26. data/lib/koi-vm/opcodes/function_operations/return.rb +11 -0
  27. data/lib/koi-vm/opcodes/function_operations/tailcall.rb +12 -0
  28. data/lib/koi-vm/opcodes/io_operations/gets.rb +10 -0
  29. data/lib/koi-vm/opcodes/io_operations/print.rb +13 -0
  30. data/lib/koi-vm/opcodes/math_operations/add.rb +14 -0
  31. data/lib/koi-vm/opcodes/math_operations/divide.rb +14 -0
  32. data/lib/koi-vm/opcodes/math_operations/multiply.rb +14 -0
  33. data/lib/koi-vm/opcodes/math_operations/subtract.rb +14 -0
  34. data/lib/koi-vm/opcodes/push_operations/push_bool.rb +12 -0
  35. data/lib/koi-vm/opcodes/push_operations/push_float.rb +12 -0
  36. data/lib/koi-vm/opcodes/push_operations/push_int.rb +12 -0
  37. data/lib/koi-vm/opcodes/push_operations/push_nil.rb +10 -0
  38. data/lib/koi-vm/opcodes/push_operations/push_string.rb +12 -0
  39. data/lib/koi-vm/opcodes/stack_operations/dup.rb +11 -0
  40. data/lib/koi-vm/opcodes/stack_operations/pop.rb +11 -0
  41. data/lib/koi-vm/opcodes/stack_operations/stksize.rb +10 -0
  42. data/lib/koi-vm/opcodes/stack_operations/swap.rb +11 -0
  43. data/lib/koi-vm/opcodes/stack_operations/top.rb +13 -0
  44. data/lib/koi-vm/opcodes/stack_operations/typeof.rb +16 -0
  45. data/lib/koi-vm/opcodes/string_operations/concat.rb +12 -0
  46. data/lib/koi-vm/opcodes/string_operations/strlen.rb +12 -0
  47. data/lib/koi-vm/opcodes/string_operations/to_string.rb +16 -0
  48. data/lib/koi-vm/opcodes/variable_operations/get_global.rb +10 -0
  49. data/lib/koi-vm/opcodes/variable_operations/get_local.rb +10 -0
  50. data/lib/koi-vm/opcodes/variable_operations/set_global.rb +11 -0
  51. data/lib/koi-vm/opcodes/variable_operations/set_local.rb +11 -0
  52. data/lib/koi-vm.rb +10 -0
  53. data/test/.gitkeep +0 -0
  54. data/test/performance/.gitignore +1 -0
  55. data/test/performance/simple_benchmark.rb +87 -0
  56. data/test/setup/test_unit_extensions.rb +21 -0
  57. data/test/test_helper.rb +13 -0
  58. data/test/unit/opcodes/comparative_operations/equal_test.rb +116 -0
  59. data/test/unit/opcodes/comparative_operations/greater_than_test.rb +53 -0
  60. data/test/unit/opcodes/comparative_operations/less_than_test.rb +53 -0
  61. data/test/unit/opcodes/control_operations/exit_test.rb +20 -0
  62. data/test/unit/opcodes/control_operations/no_op_test.rb +17 -0
  63. data/test/unit/opcodes/flow_control_operations/jump_if_test.rb +50 -0
  64. data/test/unit/opcodes/flow_control_operations/jump_test.rb +36 -0
  65. data/test/unit/opcodes/flow_control_operations/jump_unless_test.rb +50 -0
  66. data/test/unit/opcodes/function_operations/call_test.rb +39 -0
  67. data/test/unit/opcodes/function_operations/push_function_test.rb +21 -0
  68. data/test/unit/opcodes/function_operations/return_test.rb +31 -0
  69. data/test/unit/opcodes/function_operations/tailcall_test.rb +41 -0
  70. data/test/unit/opcodes/io_operations/gets_test.rb +38 -0
  71. data/test/unit/opcodes/io_operations/print_test.rb +42 -0
  72. data/test/unit/opcodes/math_operations/add_test.rb +62 -0
  73. data/test/unit/opcodes/math_operations/divide_test.rb +62 -0
  74. data/test/unit/opcodes/math_operations/multiply_test.rb +62 -0
  75. data/test/unit/opcodes/math_operations/subtract_test.rb +62 -0
  76. data/test/unit/opcodes/push_operations/push_bool_test.rb +36 -0
  77. data/test/unit/opcodes/push_operations/push_float_test.rb +27 -0
  78. data/test/unit/opcodes/push_operations/push_int_test.rb +27 -0
  79. data/test/unit/opcodes/push_operations/push_nil_test.rb +16 -0
  80. data/test/unit/opcodes/push_operations/push_string_test.rb +27 -0
  81. data/test/unit/opcodes/stack_operations/dup_test.rb +25 -0
  82. data/test/unit/opcodes/stack_operations/pop_test.rb +28 -0
  83. data/test/unit/opcodes/stack_operations/stksize_test.rb +20 -0
  84. data/test/unit/opcodes/stack_operations/swap_test.rb +36 -0
  85. data/test/unit/opcodes/stack_operations/top_test.rb +45 -0
  86. data/test/unit/opcodes/stack_operations/typeof_test.rb +61 -0
  87. data/test/unit/opcodes/string_operations/concat_test.rb +65 -0
  88. data/test/unit/opcodes/string_operations/strlen_test.rb +44 -0
  89. data/test/unit/opcodes/string_operations/to_string_test.rb +70 -0
  90. data/test/unit/opcodes/variable_operations/get_global_test.rb +18 -0
  91. data/test/unit/opcodes/variable_operations/get_local_test.rb +18 -0
  92. data/test/unit/opcodes/variable_operations/set_global_test.rb +27 -0
  93. data/test/unit/opcodes/variable_operations/set_local_test.rb +27 -0
  94. data/test/unit/vm_initialization_test.rb +86 -0
  95. metadata +200 -0
@@ -0,0 +1,70 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class ToStringTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "should push string representing topmost stack item onto the stack (nil)" do
8
+ vm = VM.new
9
+ vm.data_stack = [[NIL_, nil]]
10
+ vm.run [
11
+ TO_STRING
12
+ ]
13
+ assert_equal [[STRING_, "nil"]], vm.data_stack
14
+ end
15
+
16
+ test "should push string representing topmost stack item onto the stack (bool true)" do
17
+ vm = VM.new
18
+ vm.data_stack = [[BOOL_, true]]
19
+ vm.run [
20
+ TO_STRING
21
+ ]
22
+ assert_equal [[STRING_, "true"]], vm.data_stack
23
+ end
24
+
25
+ test "should push string representing topmost stack item onto the stack (bool false)" do
26
+ vm = VM.new
27
+ vm.data_stack = [[BOOL_, false]]
28
+ vm.run [
29
+ TO_STRING
30
+ ]
31
+ assert_equal [[STRING_, "false"]], vm.data_stack
32
+ end
33
+
34
+ test "should push string representing topmost stack item onto the stack (integer)" do
35
+ vm = VM.new
36
+ vm.data_stack = [[INTEGER_, 1]]
37
+ vm.run [
38
+ TO_STRING
39
+ ]
40
+ assert_equal [[STRING_, "1"]], vm.data_stack
41
+ end
42
+
43
+ test "should push string representing topmost stack item onto the stack (float)" do
44
+ vm = VM.new
45
+ vm.data_stack = [[FLOAT_, 1.0]]
46
+ vm.run [
47
+ TO_STRING
48
+ ]
49
+ assert_equal [[STRING_, "1.0"]], vm.data_stack
50
+ end
51
+
52
+ test "should push string representing topmost stack item onto the stack (string)" do
53
+ vm = VM.new
54
+ vm.data_stack = [[STRING_, "string"]]
55
+ vm.run [
56
+ TO_STRING
57
+ ]
58
+ assert_equal [[STRING_, "string"]], vm.data_stack
59
+ end
60
+
61
+ test "should raise StackError if there are no items on the stack" do
62
+ assert_raises StackError do
63
+ vm = VM.new
64
+ vm.run [
65
+ TO_STRING
66
+ ]
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "should get global variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.globals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_GLOBAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "should get local variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.locals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_LOCAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "should set global variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_GLOBAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.globals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_GLOBAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "should set local variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_LOCAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.locals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_LOCAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,86 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper.rb'))
2
+
3
+ class VmInitializationTest < Test::Unit::TestCase
4
+
5
+ include KoiVM
6
+
7
+ test "VM.new without arguments should return default state" do
8
+ vm = VM.new
9
+ default_state = {
10
+ :opcodes => [],
11
+ :globals => {},
12
+ :fiber => {
13
+ :data_stack => [],
14
+ :return_stack => [],
15
+ :locals => [{}],
16
+ :instruction_pointer => 0,
17
+ :level => 0
18
+ }
19
+ }
20
+ assert_equal default_state, vm.state
21
+ end
22
+
23
+ test "VM.new with valid state should not raise error" do
24
+ assert_nothing_raised do
25
+ VM.new({
26
+ :globals => {},
27
+ :fiber => {
28
+ :data_stack => [],
29
+ :return_stack => [],
30
+ :locals => [{}],
31
+ :instruction_pointer => 0,
32
+ :level => 0
33
+ }
34
+ })
35
+ end
36
+ end
37
+
38
+ test "VM.new should not raise ArgumentError if given empty hash" do
39
+ assert_nothing_raised do
40
+ VM.new({})
41
+ end
42
+ end
43
+
44
+ test "VM.new should raise ArgumentError if given state that is not a hash" do
45
+ assert_raises TypeError do
46
+ VM.new([])
47
+ end
48
+ end
49
+
50
+ test "VM.new should raise ArgumentError if given fiber with :stack that is not an array" do
51
+ assert_raises ArgumentError do
52
+ VM.new({
53
+ :fiber => {
54
+ :stack => 0
55
+ }
56
+ })
57
+ end
58
+ end
59
+
60
+ test "VM.new should raise ArgumentError if given fiber with :instruction_pointer that is not an integer" do
61
+ assert_raises ArgumentError do
62
+ VM.new({
63
+ :fiber => {
64
+ :instruction_pointer => []
65
+ }
66
+ })
67
+ end
68
+ end
69
+
70
+ test "VM.new should raise ArgumentError if given :globals that is not an array" do
71
+ assert_raises ArgumentError do
72
+ VM.new({
73
+ :globals => 1
74
+ })
75
+ end
76
+ end
77
+
78
+ test "VM.new should raise ArgumentError if given :opcodes that is not an array" do
79
+ assert_raises ArgumentError do
80
+ VM.new({
81
+ :opcodes => 1
82
+ })
83
+ end
84
+ end
85
+
86
+ end
metadata ADDED
@@ -0,0 +1,200 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: koi-vm
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Aaron Gough
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-25 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: A prototype Virtual Machine written in Ruby. Why would anyone write such a thing? Because it's fun, and it's a great learning tool.
22
+ email: aaron@aarongough.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.rdoc
29
+ files:
30
+ - .gitignore
31
+ - README.rdoc
32
+ - Rakefile
33
+ - VERSION
34
+ - architecture.rdoc
35
+ - examples/blastoff.rb
36
+ - examples/hello_world.rb
37
+ - koi-vm.gemspec
38
+ - lib/.gitkeep
39
+ - lib/koi-vm.rb
40
+ - lib/koi-vm/accessors.rb
41
+ - lib/koi-vm/core.rb
42
+ - lib/koi-vm/exceptions.rb
43
+ - lib/koi-vm/helpers.rb
44
+ - lib/koi-vm/opcodes/_opcode_constants.rb
45
+ - lib/koi-vm/opcodes/_value_constants.rb
46
+ - lib/koi-vm/opcodes/comparative_operations/equal.rb
47
+ - lib/koi-vm/opcodes/comparative_operations/greater_than.rb
48
+ - lib/koi-vm/opcodes/comparative_operations/less_than.rb
49
+ - lib/koi-vm/opcodes/control_operations/exit.rb
50
+ - lib/koi-vm/opcodes/control_operations/no_op.rb
51
+ - lib/koi-vm/opcodes/flow_control_operations/jump.rb
52
+ - lib/koi-vm/opcodes/flow_control_operations/jump_if.rb
53
+ - lib/koi-vm/opcodes/flow_control_operations/jump_unless.rb
54
+ - lib/koi-vm/opcodes/function_operations/call.rb
55
+ - lib/koi-vm/opcodes/function_operations/push_function.rb
56
+ - lib/koi-vm/opcodes/function_operations/return.rb
57
+ - lib/koi-vm/opcodes/function_operations/tailcall.rb
58
+ - lib/koi-vm/opcodes/io_operations/gets.rb
59
+ - lib/koi-vm/opcodes/io_operations/print.rb
60
+ - lib/koi-vm/opcodes/math_operations/add.rb
61
+ - lib/koi-vm/opcodes/math_operations/divide.rb
62
+ - lib/koi-vm/opcodes/math_operations/multiply.rb
63
+ - lib/koi-vm/opcodes/math_operations/subtract.rb
64
+ - lib/koi-vm/opcodes/push_operations/push_bool.rb
65
+ - lib/koi-vm/opcodes/push_operations/push_float.rb
66
+ - lib/koi-vm/opcodes/push_operations/push_int.rb
67
+ - lib/koi-vm/opcodes/push_operations/push_nil.rb
68
+ - lib/koi-vm/opcodes/push_operations/push_string.rb
69
+ - lib/koi-vm/opcodes/stack_operations/dup.rb
70
+ - lib/koi-vm/opcodes/stack_operations/pop.rb
71
+ - lib/koi-vm/opcodes/stack_operations/stksize.rb
72
+ - lib/koi-vm/opcodes/stack_operations/swap.rb
73
+ - lib/koi-vm/opcodes/stack_operations/top.rb
74
+ - lib/koi-vm/opcodes/stack_operations/typeof.rb
75
+ - lib/koi-vm/opcodes/string_operations/concat.rb
76
+ - lib/koi-vm/opcodes/string_operations/strlen.rb
77
+ - lib/koi-vm/opcodes/string_operations/to_string.rb
78
+ - lib/koi-vm/opcodes/variable_operations/get_global.rb
79
+ - lib/koi-vm/opcodes/variable_operations/get_local.rb
80
+ - lib/koi-vm/opcodes/variable_operations/set_global.rb
81
+ - lib/koi-vm/opcodes/variable_operations/set_local.rb
82
+ - test/.gitkeep
83
+ - test/performance/.gitignore
84
+ - test/performance/simple_benchmark.rb
85
+ - test/setup/test_unit_extensions.rb
86
+ - test/test_helper.rb
87
+ - test/unit/opcodes/comparative_operations/equal_test.rb
88
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
89
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
90
+ - test/unit/opcodes/control_operations/exit_test.rb
91
+ - test/unit/opcodes/control_operations/no_op_test.rb
92
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
93
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
94
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
95
+ - test/unit/opcodes/function_operations/call_test.rb
96
+ - test/unit/opcodes/function_operations/push_function_test.rb
97
+ - test/unit/opcodes/function_operations/return_test.rb
98
+ - test/unit/opcodes/function_operations/tailcall_test.rb
99
+ - test/unit/opcodes/io_operations/gets_test.rb
100
+ - test/unit/opcodes/io_operations/print_test.rb
101
+ - test/unit/opcodes/math_operations/add_test.rb
102
+ - test/unit/opcodes/math_operations/divide_test.rb
103
+ - test/unit/opcodes/math_operations/multiply_test.rb
104
+ - test/unit/opcodes/math_operations/subtract_test.rb
105
+ - test/unit/opcodes/push_operations/push_bool_test.rb
106
+ - test/unit/opcodes/push_operations/push_float_test.rb
107
+ - test/unit/opcodes/push_operations/push_int_test.rb
108
+ - test/unit/opcodes/push_operations/push_nil_test.rb
109
+ - test/unit/opcodes/push_operations/push_string_test.rb
110
+ - test/unit/opcodes/stack_operations/dup_test.rb
111
+ - test/unit/opcodes/stack_operations/pop_test.rb
112
+ - test/unit/opcodes/stack_operations/stksize_test.rb
113
+ - test/unit/opcodes/stack_operations/swap_test.rb
114
+ - test/unit/opcodes/stack_operations/top_test.rb
115
+ - test/unit/opcodes/stack_operations/typeof_test.rb
116
+ - test/unit/opcodes/string_operations/concat_test.rb
117
+ - test/unit/opcodes/string_operations/strlen_test.rb
118
+ - test/unit/opcodes/string_operations/to_string_test.rb
119
+ - test/unit/opcodes/variable_operations/get_global_test.rb
120
+ - test/unit/opcodes/variable_operations/get_local_test.rb
121
+ - test/unit/opcodes/variable_operations/set_global_test.rb
122
+ - test/unit/opcodes/variable_operations/set_local_test.rb
123
+ - test/unit/vm_initialization_test.rb
124
+ has_rdoc: true
125
+ homepage: https://github.com/aarongough/koi
126
+ licenses: []
127
+
128
+ post_install_message:
129
+ rdoc_options:
130
+ - --charset=UTF-8
131
+ - --line-numbers
132
+ - --inline-source
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ segments:
141
+ - 0
142
+ version: "0"
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ segments:
149
+ - 0
150
+ version: "0"
151
+ requirements: []
152
+
153
+ rubyforge_project:
154
+ rubygems_version: 1.3.7
155
+ signing_key:
156
+ specification_version: 3
157
+ summary: A prototype Virtual Machine written in Ruby
158
+ test_files:
159
+ - test/performance/simple_benchmark.rb
160
+ - test/setup/test_unit_extensions.rb
161
+ - test/test_helper.rb
162
+ - test/unit/opcodes/comparative_operations/equal_test.rb
163
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
164
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
165
+ - test/unit/opcodes/control_operations/exit_test.rb
166
+ - test/unit/opcodes/control_operations/no_op_test.rb
167
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
168
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
169
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
170
+ - test/unit/opcodes/function_operations/call_test.rb
171
+ - test/unit/opcodes/function_operations/push_function_test.rb
172
+ - test/unit/opcodes/function_operations/return_test.rb
173
+ - test/unit/opcodes/function_operations/tailcall_test.rb
174
+ - test/unit/opcodes/io_operations/gets_test.rb
175
+ - test/unit/opcodes/io_operations/print_test.rb
176
+ - test/unit/opcodes/math_operations/add_test.rb
177
+ - test/unit/opcodes/math_operations/divide_test.rb
178
+ - test/unit/opcodes/math_operations/multiply_test.rb
179
+ - test/unit/opcodes/math_operations/subtract_test.rb
180
+ - test/unit/opcodes/push_operations/push_bool_test.rb
181
+ - test/unit/opcodes/push_operations/push_float_test.rb
182
+ - test/unit/opcodes/push_operations/push_int_test.rb
183
+ - test/unit/opcodes/push_operations/push_nil_test.rb
184
+ - test/unit/opcodes/push_operations/push_string_test.rb
185
+ - test/unit/opcodes/stack_operations/dup_test.rb
186
+ - test/unit/opcodes/stack_operations/pop_test.rb
187
+ - test/unit/opcodes/stack_operations/stksize_test.rb
188
+ - test/unit/opcodes/stack_operations/swap_test.rb
189
+ - test/unit/opcodes/stack_operations/top_test.rb
190
+ - test/unit/opcodes/stack_operations/typeof_test.rb
191
+ - test/unit/opcodes/string_operations/concat_test.rb
192
+ - test/unit/opcodes/string_operations/strlen_test.rb
193
+ - test/unit/opcodes/string_operations/to_string_test.rb
194
+ - test/unit/opcodes/variable_operations/get_global_test.rb
195
+ - test/unit/opcodes/variable_operations/get_local_test.rb
196
+ - test/unit/opcodes/variable_operations/set_global_test.rb
197
+ - test/unit/opcodes/variable_operations/set_local_test.rb
198
+ - test/unit/vm_initialization_test.rb
199
+ - examples/blastoff.rb
200
+ - examples/hello_world.rb