added memory dump
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <filesystem>
|
||||
|
||||
#include "components/Alu.h"
|
||||
#include "components/Memory.h"
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
Manager::~Manager() {
|
||||
@@ -79,11 +80,19 @@ void Manager::init(const std::string &program_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::cout << "\033[32m=== Herzlich willkommen beim RISC-V Emulator! ===\033[0m\n";
|
||||
constexpr auto COLOR_GREEN = "\033[32m";
|
||||
constexpr auto COLOR_YELLOW = "\033[33m";
|
||||
constexpr auto COLOR_BLUE = "\033[34m";
|
||||
constexpr auto COLOR_RESET = "\033[0m";
|
||||
|
||||
std::cout << COLOR_GREEN << "=== Herzlich willkommen beim RISC-V Emulator! ===" << COLOR_RESET << "\n";
|
||||
std::cout << "Nachfolgend wird nun die angegebene Quellcodedatei eingelesen und von der ALU bearbeitet.\n"
|
||||
"\033[33mNach\033[0m jeder bearbeiteten Codezeile wird \033[34mdiese\033[0m ausgegeben und Sie werden "
|
||||
"nach dem \033[32mnächsten Schritt\033[0m gefragt. Tätigen Sie Ihre Eingabe und bestätigen Sie mit "
|
||||
"\033[32mENTER\033[0m.\nAnforderungen und Hinweise entnehmen Sie bitte der README.\n\n";
|
||||
<< COLOR_YELLOW << "Nach" << COLOR_RESET << " jeder bearbeiteten Codezeile wird "
|
||||
<< COLOR_BLUE << "diese" << COLOR_RESET << " ausgegeben und Sie werden "
|
||||
<< "nach dem " << COLOR_GREEN << "nächsten Schritt" << COLOR_RESET <<
|
||||
" gefragt. Tätigen Sie Ihre Eingabe und bestätigen Sie mit "
|
||||
<< COLOR_GREEN << "ENTER" << COLOR_RESET <<
|
||||
".\nAnforderungen und Hinweise entnehmen Sie bitte der README.\n\n";
|
||||
}
|
||||
|
||||
std::streampos Manager::getNextStreamLineOffset() {
|
||||
@@ -106,9 +115,15 @@ std::string Manager::gotoNextStreamLine() {
|
||||
}
|
||||
|
||||
bool Manager::handleUserInput() {
|
||||
std::cout <<
|
||||
"\nOptionen: (\033[32ms\033[0m) Programm durchlaufen lassen, (\033[32ml\033[0m) nächste Zeile, (\033[32me\033[0m) beenden, "
|
||||
"(\033[32mm\033[0m) Memory Dump, (\033[32mr\033[0m) Register Dump\n";
|
||||
constexpr const char *COLOR_GREEN = "\033[32m";
|
||||
constexpr const char *COLOR_RESET = "\033[0m";
|
||||
|
||||
std::cout << "\nOptionen: ("
|
||||
<< COLOR_GREEN << "s" << COLOR_RESET << ") Programm durchlaufen lassen, ("
|
||||
<< COLOR_GREEN << "l" << COLOR_RESET << ") nächste Zeile, ("
|
||||
<< COLOR_GREEN << "e" << COLOR_RESET << ") beenden, ("
|
||||
<< COLOR_GREEN << "m" << COLOR_RESET << ") Memory Dump, ("
|
||||
<< COLOR_GREEN << "r" << COLOR_RESET << ") Register Dump\n";
|
||||
char input = '\0';
|
||||
while (true) {
|
||||
std::cout << "Eingabe: ";
|
||||
@@ -116,14 +131,21 @@ bool Manager::handleUserInput() {
|
||||
input = std::tolower(input);
|
||||
|
||||
if (input == 's') {
|
||||
return true; // runAll = true
|
||||
return true;
|
||||
} else if (input == 'l') {
|
||||
return false; // nur nächste Zeile
|
||||
return false;
|
||||
} else if (input == 'e') {
|
||||
std::cout << "Programm wird beendet.\n";
|
||||
exit(0); // oder andere Beendigung
|
||||
exit(0);
|
||||
} else if (input == 'm') {
|
||||
//Memory::dump();
|
||||
std::cout << "Wie viele Speicherzellen sollen gedumpt werden? ";
|
||||
int dumpSize = 0;
|
||||
while (!(std::cin >> dumpSize) || dumpSize == 0) {
|
||||
std::cout << "Ungültige Eingabe. Bitte eine positive Zahl eingeben: ";
|
||||
std::cin.clear();
|
||||
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||
}
|
||||
Memory::getInstance().dump(dumpSize);
|
||||
} else if (input == 'r') {
|
||||
//Register::getInstance().dump();
|
||||
} else {
|
||||
@@ -133,8 +155,12 @@ bool Manager::handleUserInput() {
|
||||
}
|
||||
|
||||
void Manager::handleExitInput() {
|
||||
std::cout <<
|
||||
"\nOptionen: (\033[32me\033[0m) beenden, (\033[32mm\033[0m) Memory Dump, (\033[32mr\033[0m) Register Dump\n";
|
||||
constexpr auto COLOR_GREEN = "\033[32m";
|
||||
constexpr auto COLOR_RESET = "\033[0m";
|
||||
std::cout << "\nOptionen: ("
|
||||
<< COLOR_GREEN << "e" << COLOR_RESET << ") beenden, ("
|
||||
<< COLOR_GREEN << "m" << COLOR_RESET << ") Memory Dump, ("
|
||||
<< COLOR_GREEN << "r" << COLOR_RESET << ") Register Dump\n";
|
||||
char input = '\0';
|
||||
while (true) {
|
||||
std::cout << "Eingabe: ";
|
||||
@@ -145,7 +171,14 @@ void Manager::handleExitInput() {
|
||||
std::cout << "Programm wird beendet.\n";
|
||||
exit(0); // oder andere Beendigung
|
||||
} else if (input == 'm') {
|
||||
//Memory::dump();
|
||||
std::cout << "Wie viele Speicherzellen sollen gedumpt werden? ";
|
||||
int dumpSize = 0;
|
||||
while (!(std::cin >> dumpSize) || dumpSize == 0) {
|
||||
std::cout << "Ungültige Eingabe. Bitte eine positive Zahl eingeben: ";
|
||||
std::cin.clear();
|
||||
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
|
||||
}
|
||||
Memory::getInstance().dump(dumpSize);
|
||||
} else if (input == 'r') {
|
||||
//Register::getInstance().dump();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user