Class: HackAssembler::SymbolTable

Inherits:
Object
  • Object
show all
Defined in:
lib/hack_assembler/symbol_table.rb

Instance Method Summary collapse

Constructor Details

#initializeSymbolTable

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