added "beq" command

This commit is contained in:
black
2025-07-08 15:18:00 +02:00
parent f896f82db8
commit 6e65fe88fc
6 changed files with 76 additions and 32 deletions

View File

@@ -11,7 +11,37 @@
#include "components/Alu.h"
namespace fs = std::filesystem;
Manager::Manager(std::string path): m_path(std::move(path)) {
Manager::~Manager() {
m_programFile.close();
}
Manager *Manager::getInstance() {
static Manager instance;
return &instance;
}
int Manager::run() {
if (!m_programFile.is_open()) {
std::cerr << "Bitte zuerst die init() Methode aufrufen!" << "\n" << std::flush;
}
std::string line;
ProgramLoader::getInstance()->indexFile(m_programFile);
/// Die Position des Streams (virtueller Lesekopf) muss nach dem Indexen wieder zurückgesetzt werden
m_programFile.clear();
m_programFile.seekg(0);
while (std::getline(m_programFile, line)) {
auto lineVector = ProgramLoader::parseLine(line);
Alu::calculate(lineVector);
}
return 0;
}
void Manager::setStreamPosition(const std::streampos pos) {
m_programFile.seekg(pos);
}
void Manager::init(const std::string &program_path) {
m_path = program_path;
std::cout << "Öffne Quellcode Datei: '" << m_path << "'" << "\n" << std::flush;
if (!fs::exists(m_path)) {
std::cerr << "Datei existiert nicht: " << m_path << "\n" << std::flush;
@@ -25,24 +55,3 @@ Manager::Manager(std::string path): m_path(std::move(path)) {
return;
}
}
Manager::~Manager() {
m_programFile.close();
}
Manager *Manager::getInstance(const std::string &program_path) {
static Manager instance{program_path};
return &instance;
}
int Manager::run() {
std::string line;
ProgramLoader::getInstance()->indexFile(m_programFile);
m_programFile.clear();
m_programFile.seekg(0);
while (std::getline(m_programFile, line)) {
auto lineVector = ProgramLoader::parseLine(line);
Alu::calculate(lineVector);
}
return 0;
}