class HackAssembler::SymbolTable

Public Class Methods

new() click to toggle source
# 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

Public Instance Methods

add_label_address(symbol, address) click to toggle source
# 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) click to toggle source
# 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