Sha256: 9b89693485b601743bb86b4ac20ec8619c344640406d517472019fee5b00d543

Contents?: true

Size: 423 Bytes

Versions: 1

Compression:

Stored size: 423 Bytes

Contents

module Whitespace::ISA
  class Call < Instruction
    attr_reader :name

    def initialize(vm, name)
      unless Whitespace::Util.is_label?(name)
        raise ArgumentError, "must be a label: #{name}"
      end
      super(vm)
      @name = name
    end

    def execute
      index = Whitespace::Util.find_label(vm.instructions, name)
      vm.cstack.push vm.pc.to_int
      vm.pc.change_to index + 1
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whitespace-ruby-1.0.0 lib/whitespace/instructions/flow_control/call.rb