class AVR::RegisterFile
Attributes
registers[R]
word_register_map[R]
Public Class Methods
new(cpu)
click to toggle source
# File lib/avr/register/register_file.rb, line 20 def initialize(cpu) @cpu = cpu @registers = {} @word_register_map = {} @register_list = [] end
Public Instance Methods
[](key)
click to toggle source
# File lib/avr/register/register_file.rb, line 47 def [](key) @registers[@register_list[key]] if key.is_a?(Integer) end
add(register)
click to toggle source
# File lib/avr/register/register_file.rb, line 6 def add(register) @registers[register.name] = register @cpu.send(:define_singleton_method, register.name.to_sym, proc { register }) @cpu.send(:define_singleton_method, (register.name.to_s + '=').to_sym, proc { |value| register.value = value }) @register_list << register.name return unless register.is_a?(RegisterPair) @word_register_map[register.l] = register @word_register_map[register.h] = register end
associated_word_register(register)
click to toggle source
# File lib/avr/register/register_file.rb, line 51 def associated_word_register(register) @word_register_map[register] end
fetch(key)
click to toggle source
# File lib/avr/register/register_file.rb, line 43 def fetch(key) @registers.fetch(@register_list.fetch(key)) if key.is_a?(Integer) end
inspect()
click to toggle source
# File lib/avr/register/register_file.rb, line 55 def inspect "#<#{self.class.name} #{register_values}>" end
print_status()
click to toggle source
# File lib/avr/register/register_file.rb, line 37 def print_status @register_list.each_slice(8) do |slice| puts slice.map { |name| '%10s' % ["#{name}=#{@registers[name].value_hex}"] }.join + '\n' end end
register_values()
click to toggle source
# File lib/avr/register/register_file.rb, line 33 def register_values @register_list.map { |name| @registers[name].to_s }.join(', ') end
reset()
click to toggle source
# File lib/avr/register/register_file.rb, line 27 def reset @registers.each_value do |register| register.value = 0 end end