36 lines
879 B
C++
36 lines
879 B
C++
#include <string>
|
|
#include <vector>
|
|
#include <regex>
|
|
#include "InstHandler.h"
|
|
|
|
#ifndef ASSEMBLER_H
|
|
#define ASSEMBLER_H
|
|
|
|
|
|
|
|
class Assembler {
|
|
private:
|
|
InstHandler * ih;
|
|
|
|
std::vector<std::string> asmLines;
|
|
std::vector<label_t> labels;
|
|
std::vector<inst_t> instructions;
|
|
|
|
union Fp {
|
|
double d;
|
|
uint32_t i[2];
|
|
};
|
|
|
|
int parseDfill(std::string arg, uint32_t icount, uint64_t ln);
|
|
int parseInst(std::string inst, uint32_t icount, uint64_t ln);
|
|
int newLabel(std::string name, uint32_t icount);
|
|
std::vector<std::string> tokenizeInst(std::string inst);
|
|
std::string toLowerCase(std::string str);
|
|
void error(uint64_t ln, std::string msg);
|
|
public:
|
|
Assembler(std::vector<std::string>);
|
|
void parse();
|
|
std::vector<uint32_t> assemble();
|
|
};
|
|
|
|
#endif
|