Files
The-Hack-Assembler/include/symbol_table.hpp

45 lines
824 B
C++
Raw Normal View History

2020-08-08 11:55:34 +05:30
#pragma once
2020-08-10 12:22:11 +05:30
#ifndef SYMBOL_TABLE_HPP
2020-08-08 11:55:34 +05:30
#define SYMBOL_TABLE_HPP
#include <unordered_map>
class symbol_table
{
private:
2020-08-10 12:22:11 +05:30
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},
};
2020-08-08 11:55:34 +05:30
public:
2020-08-10 12:22:11 +05:30
symbol_table() {}
2020-08-08 11:55:34 +05:30
void add_entry(std::string symbol, int address);
bool contains(std::string symbol);
int get_address(std::string symbol);
};
#endif