added "jalr" command

This commit is contained in:
black
2025-07-08 20:31:11 +02:00
parent 4fdaf3dafa
commit bc77fae7ee
6 changed files with 77 additions and 10 deletions

View File

@@ -24,13 +24,14 @@ 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);
std::string line;
while (std::getline(m_programFile, line)) {
auto lineVector = ProgramLoader::parseLine(line);
if (lineVector.empty()) continue;
Alu::calculate(lineVector);
}
return 0;
@@ -64,10 +65,15 @@ std::streampos Manager::getNextStreamLineOffset() {
/// Speichert das aktuelle stream offset
const auto positionBefore = m_programFile.tellg();
/// Geht eine Zeile nach vorne zum nächsten Befehl (PC+4) und speichert den offset
std::string line;
std::getline(m_programFile, line);
gotoNextStreamLine();
const auto positionAfter = m_programFile.tellg();
/// Geht zum offset vom Anfang zurück und gibt die nächste Adresse (PC+4) zurück
m_programFile.seekg(positionBefore);
return positionAfter;
}
std::string Manager::gotoNextStreamLine() {
std::string line;
getline(m_programFile, line);
return line;
}