module Crabstone::Register

Module for arch/<version>/<arch>_const.rb to extend.

Public Instance Methods

register(reg) click to toggle source

@param [Integer, String, Symbol] reg @return [Integer]

# File lib/crabstone/arch/register.rb, line 10
def register(reg)
  return reg if value?(reg)

  dict[reg.to_s.upcase] || invalid
end

Private Instance Methods

dict() click to toggle source
# File lib/crabstone/arch/register.rb, line 18
def dict
  return @dict if defined?(@dict)

  keys = constants.select { |k| k.to_s.start_with?('REG_') }
  @dict = keys.map { |k| [k.to_s[4..-1], const_get(k)] }.to_h.freeze
end
invalid() click to toggle source
# File lib/crabstone/arch/register.rb, line 30
def invalid
  dict['INVALID']
end
value?(val) click to toggle source
# File lib/crabstone/arch/register.rb, line 25
def value?(val)
  @val_set ||= Set.new(dict.values)
  @val_set.member?(val)
end