module Register # load a constant into a register # # first is the actual constant, either immediate register or object reference (from the space) # second argument is the register the constant is loaded into class LoadConstant < Instruction def initialize source , constant , register super(source) @register = register @constant = constant end attr_accessor :register , :constant def to_s "LoadConstant: #{register} <- #{constant_str}" end def self.load source , constant , register LoadConstant.new source , constant , register end private def constant_str case @constant when String , Symbol , Fixnum , Integer @constant.to_s else if( @constant.respond_to? :sof_reference_name ) constant.sof_reference_name else constant.class.name.to_s end end end end end