to_s for reg instructions

This commit is contained in:
Torsten Ruger 2015-07-24 13:23:56 +03:00
parent fa552bf751
commit 139b0174d8
10 changed files with 47 additions and 5 deletions

View File

@ -11,7 +11,7 @@ module Register
attr_reader :block attr_reader :block
def to_s def to_s
"Branch(to: #{block.name})" "Branch(block: #{block.name})"
end end
end end

View File

@ -8,5 +8,10 @@ module Register
@method = method @method = method
end end
attr_reader :method attr_reader :method
def to_s
"FunctionCall(#{method.name})"
end
end end
end end

View File

@ -9,5 +9,10 @@ module Register
@index = index @index = index
end end
attr_reader :register , :index attr_reader :register , :index
def to_s
"FunctionReturn(#{register}: #{index})"
end
end end
end end

View File

@ -27,6 +27,11 @@ module Register
raise "Not register #{array}" unless Register::RegisterReference.look_like_reg(array) raise "Not register #{array}" unless Register::RegisterReference.look_like_reg(array)
end end
attr_accessor :register , :array , :index attr_accessor :register , :array , :index
def to_s
"GetSlot(#{register}: #{array}[#{index}])"
end
end end
# Produce a GetSlot instruction. # Produce a GetSlot instruction.

View File

@ -10,5 +10,10 @@ module Register
@constant = constant @constant = constant
end end
attr_accessor :register , :constant attr_accessor :register , :constant
def to_s
"LoadConstant(#{register}: #{constant})"
end
end end
end end

View File

@ -21,5 +21,10 @@ module Register
@to = wrap_register(to) @to = wrap_register(to)
end end
attr_reader :from, :to attr_reader :from, :to
def to_s
"RegisterTransfer(#{from} -> #{to})"
end
end end
end end

View File

@ -12,6 +12,11 @@ module Register
@index = index @index = index
end end
attr_reader :register , :index attr_reader :register , :index
def to_s
"SaveReturn(#{register}[#{index}])"
end
end end
# Produce a SaveReturn instruction. # Produce a SaveReturn instruction.

View File

@ -26,6 +26,10 @@ module Register
raise "Not register #{array}" unless Register::RegisterReference.look_like_reg(array) raise "Not register #{array}" unless Register::RegisterReference.look_like_reg(array)
end end
attr_accessor :register , :array , :index attr_accessor :register , :array , :index
def to_s
"SetSlot(#{register}: #{array}[#{index}])"
end
end end
# Produce a SetSlot instruction. # Produce a SetSlot instruction.

View File

@ -13,5 +13,10 @@ module Register
@name = name @name = name
end end
attr_reader :name attr_reader :name
def to_s
"Syscall(#{name})"
end
end end
end end

View File

@ -17,6 +17,9 @@ module Register
@symbol = r @symbol = r
end end
def to_s
symbol.to_s
end
def self.convert something def self.convert something
return something unless something.is_a? Symbol return something unless something.is_a? Symbol
return something unless look_like_reg(something) return something unless look_like_reg(something)