added "jalr" command
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user