rubyx/lib/virtual/constants.rb

45 lines
965 B
Ruby
Raw Normal View History

module Virtual
class Constant < ::Virtual::Value
end
class TrueValue < Constant
end
class FalseValue < Constant
end
class NilValue < Constant
end
# another abstract "marker" class (so we can check for it)
# derived classes are Boot/Meta Class and StringConstant
class ObjectConstant < Constant
end
class IntegerConstant < Constant
def initialize int
@integer = int
end
attr_reader :integer
def type
Virtual::Integer
end
end
# The name really says it all.
# The only interesting thing is storage.
# Currently string are stored "inline" , ie in the code segment.
# Mainly because that works an i aint no elf expert.
class StringConstant < ObjectConstant
def initialize str
@string = str
end
2014-08-19 21:54:28 +02:00
attr_reader :string
def type
Virtual::Reference
end
2014-05-19 14:44:12 +02:00
def result= value
class_for(MoveInstruction).new(value , self , :opcode => :mov)
end
end
end