Class: HackAssembler::SymbolTable
- Inherits:
-
Object
- Object
- HackAssembler::SymbolTable
- Defined in:
- lib/hack_assembler/symbol_table.rb
Instance Method Summary collapse
- #add_label_address(symbol, address) ⇒ Object
- #get_address(symbol) ⇒ Object
-
#initialize ⇒ SymbolTable
constructor
A new instance of SymbolTable.
Constructor Details
#initialize ⇒ SymbolTable
Returns a new instance of SymbolTable.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/hack_assembler/symbol_table.rb', line 3 def initialize @num_variable_symbols = 0 @symbol_table = { 'R0' => '0', 'R1' => '1', 'R2' => '2', 'R3' => '3', 'R4' => '4', 'R5' => '5', 'R6' => '6', 'R7' => '7', 'R8' => '8', 'R9' => '9', 'R10' => '10', 'R11' => '11', 'R12' => '12', 'R13' => '13', 'R14' => '14', 'R15' => '15', 'SCREEN' => '16384', 'KBD' => '24576', 'SP' => '0', 'LCL' => '1', 'ARG' => '2', 'THIS' => '3', 'THAT' => '4' } end |
Instance Method Details
#add_label_address(symbol, address) ⇒ Object
44 45 46 |
# File 'lib/hack_assembler/symbol_table.rb', line 44 def add_label_address(symbol, address) @symbol_table[symbol] = address.to_s end |
#get_address(symbol) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/hack_assembler/symbol_table.rb', line 33 def get_address(symbol) address = @symbol_table[symbol] if address.nil? address = (16 + @num_variable_symbols).to_s @symbol_table[symbol] = address @num_variable_symbols += 1 end address end |