Files
The-Hack-Assembler/include/symbol_table.hpp
2020-08-10 16:10:12 +05:30

46 lines
863 B
C++

#pragma once
#ifndef SYMBOL_TABLE_HPP
#define SYMBOL_TABLE_HPP
#include <unordered_map>
class symbol_table
{
private:
std::unordered_map<std::string, int> symbols = {
{"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},
{"SP", 0},
{"LCL", 1},
{"ARG", 2},
{"THIS", 3},
{"THAT", 4},
{"SCREEN", 16384},
{"KBD", 24576},
};
int next = 15;
public:
symbol_table() {}
int available();
void add_entry(std::string symbol, int address);
bool contains(std::string symbol);
int get_address(std::string symbol);
};
#endif