register reference creation got more complicated

This commit is contained in:
Torsten Ruger
2015-06-01 08:34:17 +03:00
parent 66f5dcf152
commit 336e6c18de
3 changed files with 30 additions and 9 deletions

View File

@ -12,10 +12,27 @@ module Register
def initialize r
raise "wrong type for register init #{r}" unless r.is_a? Symbol
raise "double r #{r}" if r == :rr1
raise "double r #{r}" if r.to_s[0,1] == "rr"
raise "not reg #{r}" unless self.class.look_like_reg r
@symbol = r
end
def self.convert something
return something unless something.is_a? Symbol
return something unless look_like_reg(something)
return new(something)
end
def self.look_like_reg is_it
if( [:lr , :pc].include? is_it )
return true
end
if( (is_it.to_s.length < 3) and (is_it.to_s[0] == "r"))
return true
end
return false
end
def == other
return false if other.nil?
return false if other.class != RegisterReference