rubyx/lib/register/instructions/load_constant.rb

37 lines
942 B
Ruby
Raw Normal View History

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
2015-07-24 12:23:56 +02:00
def to_s
2015-08-08 23:52:47 +02:00
"LoadConstant: #{register} <- #{constant_str}"
2015-07-24 12:23:56 +02:00
end
def self.load source , constant , register
LoadConstant.new source , constant , register
end
2015-08-08 23:52:47 +02:00
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