class Whitespace::VM
Attributes
cstack[R]
instructions[R]
memory[R]
pc[R]
vstack[R]
Public Class Methods
new()
click to toggle source
# File lib/whitespace/vm.rb, line 10 def initialize @instructions = [] reset end
Public Instance Methods
load(instructions)
click to toggle source
# File lib/whitespace/vm.rb, line 15 def load(instructions) @instructions = Array(instructions) end
run()
click to toggle source
# File lib/whitespace/vm.rb, line 19 def run reset loop do instruction = instructions.fetch pc pc.increment execute instruction end end
Private Instance Methods
execute(instruction)
click to toggle source
# File lib/whitespace/vm.rb, line 38 def execute(instruction) instruction.execute rescue Halt raise StopIteration end
reset()
click to toggle source
# File lib/whitespace/vm.rb, line 31 def reset @vstack = Stack.new # a value stack @cstack = Stack.new # a call stack @memory = Memory.new # heap memory @pc = Counter.new # program counter end