Class: Indis::ARM::EncodingLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/indis-arm/instruction_loader.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, arr) ⇒ EncodingLoader

Returns a new instance of EncodingLoader.



56
57
58
59
# File 'lib/indis-arm/instruction_loader.rb', line 56

def initialize(name, arr)
  @name = name
  @classes = arr
end

Instance Method Details

#encoding(enc, &block) ⇒ Object

Loads a specific instruction encoding. The block is evaluated in a context of newly-created MnemonicLoader.

Parameters:

  • enc (Symbol)

    instruction encoding name



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/indis-arm/instruction_loader.rb', line 64

def encoding(enc, &block)
  unless block_given?
    #puts "Encoding #{enc} of #{@name} is undefined yet"
    return
  end
  
  name = @name
  klass = Class.new(Indis::ARM::Instruction) { @name = name; @encoding = enc }
  ARM.const_set("#{name}Instruction_#{enc}", klass)
  
  ml = MnemonicLoader.new(klass)
  ml.instance_eval(&block)
  
  @classes << klass
end