Class: Wilson::Operand

Inherits:
Object show all
Defined in:
lib/wilson.rb

Overview

Operand is any kind of operand used in a command or instruction, eg: registers, memory addresses, labels, immediates, etc.

Direct Known Subclasses

Address, Immediate, Label, Register, SpecialRegister

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bits = nil, machine = nil) ⇒ Operand

TODO: fix all initialize methods from here down to have cleaner args



867
868
869
870
# File 'lib/wilson.rb', line 867

def initialize bits = nil, machine = nil
  @bits = bits
  @machine = machine
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(msg, *args, &b) ⇒ Object



872
873
874
# File 'lib/wilson.rb', line 872

def method_missing msg, *args, &b
  super unless self.instructionFromMessage(msg, *args, &b).assemble
end

Instance Attribute Details

#bitsObject

Returns the value of attribute bits.



858
859
860
# File 'lib/wilson.rb', line 858

def bits
  @bits
end

#machineObject

Returns the value of attribute machine.



858
859
860
# File 'lib/wilson.rb', line 858

def machine
  @machine
end

Class Method Details

.on(machine) ⇒ Object



860
861
862
863
864
# File 'lib/wilson.rb', line 860

def self.on machine
  x = self.new
  x.machine = machine
  x
end

Instance Method Details

#instructionFromMessage(msg, *args, &b) ⇒ Object



876
877
878
# File 'lib/wilson.rb', line 876

def instructionFromMessage msg, *args, &b
  Instruction.on_message machine, [msg, self, *args] + (b ? [b] : [])
end

#operand?Boolean

Returns:

  • (Boolean)


880
881
882
# File 'lib/wilson.rb', line 880

def operand?
  true
end