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.
- data/.gitignore +2 -0
- data/README.rdoc +47 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/architecture.rdoc +112 -0
- data/examples/blastoff.rb +20 -0
- data/examples/hello_world.rb +8 -0
- data/koi-vm.gemspec +174 -0
- data/lib/.gitkeep +0 -0
- data/lib/koi-vm/accessors.rb +63 -0
- data/lib/koi-vm/core.rb +48 -0
- data/lib/koi-vm/exceptions.rb +8 -0
- data/lib/koi-vm/helpers.rb +5 -0
- data/lib/koi-vm/opcodes/_opcode_constants.rb +58 -0
- data/lib/koi-vm/opcodes/_value_constants.rb +10 -0
- data/lib/koi-vm/opcodes/comparative_operations/equal.rb +11 -0
- data/lib/koi-vm/opcodes/comparative_operations/greater_than.rb +14 -0
- data/lib/koi-vm/opcodes/comparative_operations/less_than.rb +14 -0
- data/lib/koi-vm/opcodes/control_operations/exit.rb +10 -0
- data/lib/koi-vm/opcodes/control_operations/no_op.rb +9 -0
- data/lib/koi-vm/opcodes/flow_control_operations/jump.rb +11 -0
- data/lib/koi-vm/opcodes/flow_control_operations/jump_if.rb +16 -0
- data/lib/koi-vm/opcodes/flow_control_operations/jump_unless.rb +16 -0
- data/lib/koi-vm/opcodes/function_operations/call.rb +13 -0
- data/lib/koi-vm/opcodes/function_operations/push_function.rb +15 -0
- data/lib/koi-vm/opcodes/function_operations/return.rb +11 -0
- data/lib/koi-vm/opcodes/function_operations/tailcall.rb +12 -0
- data/lib/koi-vm/opcodes/io_operations/gets.rb +10 -0
- data/lib/koi-vm/opcodes/io_operations/print.rb +13 -0
- data/lib/koi-vm/opcodes/math_operations/add.rb +14 -0
- data/lib/koi-vm/opcodes/math_operations/divide.rb +14 -0
- data/lib/koi-vm/opcodes/math_operations/multiply.rb +14 -0
- data/lib/koi-vm/opcodes/math_operations/subtract.rb +14 -0
- data/lib/koi-vm/opcodes/push_operations/push_bool.rb +12 -0
- data/lib/koi-vm/opcodes/push_operations/push_float.rb +12 -0
- data/lib/koi-vm/opcodes/push_operations/push_int.rb +12 -0
- data/lib/koi-vm/opcodes/push_operations/push_nil.rb +10 -0
- data/lib/koi-vm/opcodes/push_operations/push_string.rb +12 -0
- data/lib/koi-vm/opcodes/stack_operations/dup.rb +11 -0
- data/lib/koi-vm/opcodes/stack_operations/pop.rb +11 -0
- data/lib/koi-vm/opcodes/stack_operations/stksize.rb +10 -0
- data/lib/koi-vm/opcodes/stack_operations/swap.rb +11 -0
- data/lib/koi-vm/opcodes/stack_operations/top.rb +13 -0
- data/lib/koi-vm/opcodes/stack_operations/typeof.rb +16 -0
- data/lib/koi-vm/opcodes/string_operations/concat.rb +12 -0
- data/lib/koi-vm/opcodes/string_operations/strlen.rb +12 -0
- data/lib/koi-vm/opcodes/string_operations/to_string.rb +16 -0
- data/lib/koi-vm/opcodes/variable_operations/get_global.rb +10 -0
- data/lib/koi-vm/opcodes/variable_operations/get_local.rb +10 -0
- data/lib/koi-vm/opcodes/variable_operations/set_global.rb +11 -0
- data/lib/koi-vm/opcodes/variable_operations/set_local.rb +11 -0
- data/lib/koi-vm.rb +10 -0
- data/test/.gitkeep +0 -0
- data/test/performance/.gitignore +1 -0
- data/test/performance/simple_benchmark.rb +87 -0
- data/test/setup/test_unit_extensions.rb +21 -0
- data/test/test_helper.rb +13 -0
- data/test/unit/opcodes/comparative_operations/equal_test.rb +116 -0
- data/test/unit/opcodes/comparative_operations/greater_than_test.rb +53 -0
- data/test/unit/opcodes/comparative_operations/less_than_test.rb +53 -0
- data/test/unit/opcodes/control_operations/exit_test.rb +20 -0
- data/test/unit/opcodes/control_operations/no_op_test.rb +17 -0
- data/test/unit/opcodes/flow_control_operations/jump_if_test.rb +50 -0
- data/test/unit/opcodes/flow_control_operations/jump_test.rb +36 -0
- data/test/unit/opcodes/flow_control_operations/jump_unless_test.rb +50 -0
- data/test/unit/opcodes/function_operations/call_test.rb +39 -0
- data/test/unit/opcodes/function_operations/push_function_test.rb +21 -0
- data/test/unit/opcodes/function_operations/return_test.rb +31 -0
- data/test/unit/opcodes/function_operations/tailcall_test.rb +41 -0
- data/test/unit/opcodes/io_operations/gets_test.rb +38 -0
- data/test/unit/opcodes/io_operations/print_test.rb +42 -0
- data/test/unit/opcodes/math_operations/add_test.rb +62 -0
- data/test/unit/opcodes/math_operations/divide_test.rb +62 -0
- data/test/unit/opcodes/math_operations/multiply_test.rb +62 -0
- data/test/unit/opcodes/math_operations/subtract_test.rb +62 -0
- data/test/unit/opcodes/push_operations/push_bool_test.rb +36 -0
- data/test/unit/opcodes/push_operations/push_float_test.rb +27 -0
- data/test/unit/opcodes/push_operations/push_int_test.rb +27 -0
- data/test/unit/opcodes/push_operations/push_nil_test.rb +16 -0
- data/test/unit/opcodes/push_operations/push_string_test.rb +27 -0
- data/test/unit/opcodes/stack_operations/dup_test.rb +25 -0
- data/test/unit/opcodes/stack_operations/pop_test.rb +28 -0
- data/test/unit/opcodes/stack_operations/stksize_test.rb +20 -0
- data/test/unit/opcodes/stack_operations/swap_test.rb +36 -0
- data/test/unit/opcodes/stack_operations/top_test.rb +45 -0
- data/test/unit/opcodes/stack_operations/typeof_test.rb +61 -0
- data/test/unit/opcodes/string_operations/concat_test.rb +65 -0
- data/test/unit/opcodes/string_operations/strlen_test.rb +44 -0
- data/test/unit/opcodes/string_operations/to_string_test.rb +70 -0
- data/test/unit/opcodes/variable_operations/get_global_test.rb +18 -0
- data/test/unit/opcodes/variable_operations/get_local_test.rb +18 -0
- data/test/unit/opcodes/variable_operations/set_global_test.rb +27 -0
- data/test/unit/opcodes/variable_operations/set_local_test.rb +27 -0
- data/test/unit/vm_initialization_test.rb +86 -0
- 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
|