Class: AVR::RegisterFile
- Inherits:
-
Object
- Object
- AVR::RegisterFile
- Defined in:
- lib/avr/register/register_file.rb
Instance Attribute Summary collapse
-
#registers ⇒ Object
readonly
Returns the value of attribute registers.
-
#word_register_map ⇒ Object
readonly
Returns the value of attribute word_register_map.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #add(register) ⇒ Object
- #associated_word_register(register) ⇒ Object
- #fetch(key) ⇒ Object
-
#initialize(cpu) ⇒ RegisterFile
constructor
A new instance of RegisterFile.
- #inspect ⇒ Object
- #print_status ⇒ Object
- #register_values ⇒ Object
- #reset ⇒ Object
Constructor Details
#initialize(cpu) ⇒ RegisterFile
Returns a new instance of RegisterFile.
20 21 22 23 24 25 |
# File 'lib/avr/register/register_file.rb', line 20 def initialize(cpu) @cpu = cpu @registers = {} @word_register_map = {} @register_list = [] end |
Instance Attribute Details
#registers ⇒ Object (readonly)
Returns the value of attribute registers.
17 18 19 |
# File 'lib/avr/register/register_file.rb', line 17 def registers @registers end |
#word_register_map ⇒ Object (readonly)
Returns the value of attribute word_register_map.
18 19 20 |
# File 'lib/avr/register/register_file.rb', line 18 def word_register_map @word_register_map end |
Instance Method Details
#[](key) ⇒ Object
47 48 49 |
# File 'lib/avr/register/register_file.rb', line 47 def [](key) @registers[@register_list[key]] if key.is_a?(Integer) end |
#add(register) ⇒ Object
6 7 8 9 10 11 12 13 14 15 |
# 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) ⇒ Object
51 52 53 |
# File 'lib/avr/register/register_file.rb', line 51 def associated_word_register(register) @word_register_map[register] end |
#fetch(key) ⇒ Object
43 44 45 |
# 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 ⇒ Object
55 56 57 |
# File 'lib/avr/register/register_file.rb', line 55 def inspect "#<#{self.class.name} #{register_values}>" end |
#print_status ⇒ Object
37 38 39 40 41 |
# 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 ⇒ Object
33 34 35 |
# File 'lib/avr/register/register_file.rb', line 33 def register_values @register_list.map { |name| @registers[name].to_s }.join(', ') end |
#reset ⇒ Object
27 28 29 30 31 |
# File 'lib/avr/register/register_file.rb', line 27 def reset @registers.each_value do |register| register.value = 0 end end |