not implemented yet

This commit is contained in:
avinal
2020-08-10 12:22:11 +05:30
parent c2fd11ff11
commit 5685482eac
2 changed files with 49 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
#pragma once #pragma once
#ifdef SYMBOL_TABLE_HPP #ifndef SYMBOL_TABLE_HPP
#define SYMBOL_TABLE_HPP #define SYMBOL_TABLE_HPP
#include <unordered_map> #include <unordered_map>
@@ -7,11 +7,34 @@
class symbol_table class symbol_table
{ {
private: private:
std::unordered_map<std::string, int> symbols; 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},
};
public: public:
symbol_table(); symbol_table() {}
~symbol_table();
void add_entry(std::string symbol, int address); void add_entry(std::string symbol, int address);
bool contains(std::string symbol); bool contains(std::string symbol);

View File

@@ -1 +1,22 @@
#include "../include/symbol_table.hpp" #include "../include/symbol_table.hpp"
void symbol_table::add_entry(std::string symbol, int address)
{
symbols.insert(std::make_pair(symbol, address));
}
bool symbol_table::contains(std::string symbol)
{
return !(symbols.find(symbol) == symbols.end());
}
int symbol_table::get_address(std::string symbol)
{
if (contains(symbol))
{
return symbols[symbol];
}else
{
return -1;
}
}