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



810
811
812
813
# File 'lib/wilson.rb', line 810

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



815
816
817
# File 'lib/wilson.rb', line 815

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.



801
802
803
# File 'lib/wilson.rb', line 801

def bits
  @bits
end

#machineObject

Returns the value of attribute machine.



801
802
803
# File 'lib/wilson.rb', line 801

def machine
  @machine
end

Class Method Details

.on(machine) ⇒ Object



803
804
805
806
807
# File 'lib/wilson.rb', line 803

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

Instance Method Details

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



819
820
821
# File 'lib/wilson.rb', line 819

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

#operand?Boolean

Returns:

  • (Boolean)


823
824
825
# File 'lib/wilson.rb', line 823

def operand?
  true
end