update to c++17 and bug fixes
This commit is contained in:
@@ -17,11 +17,11 @@ void Alu::calculate(const std::vector<std::string> &commandVector) {
|
||||
/// Wandle Vektor[2] (das zweite Argument) nur um, falls es kein SW/LW Argument ist
|
||||
int arg2 = 0;
|
||||
if (commandVector.at(2).find('(') != std::string::npos) {
|
||||
arg2 = parseArgument(commandVector.at(2));
|
||||
arg2 = parseAddress(commandVector.at(2));
|
||||
}
|
||||
/// Wandle Vektor[3] (das dritte Argument) nur um, falls dieser existiert
|
||||
int arg3 = 0;
|
||||
if (!commandVector.at(3).empty()) {
|
||||
if (commandVector.size() > 3) {
|
||||
arg3 = parseArgument(commandVector.at(3));
|
||||
}
|
||||
|
||||
@@ -66,11 +66,11 @@ void Alu::calculate(const std::vector<std::string> &commandVector) {
|
||||
const auto result = register1 | immediate;
|
||||
Register::getInstance().setRegister(arg1, result);
|
||||
} else if (command == "lw") {
|
||||
const auto address = parseAddress(commandVector.at(2));
|
||||
const auto address = arg2;
|
||||
const auto data = Memory::getInstance()->load(address);
|
||||
Register::getInstance().setRegister(arg1, data);
|
||||
} else if (command == "sw") {
|
||||
const auto address = parseAddress(commandVector.at(2));
|
||||
const auto address = arg2;
|
||||
const auto data = Register::getInstance().getRegister(arg1);
|
||||
Memory::getInstance()->store(address, data);
|
||||
}
|
||||
@@ -89,10 +89,9 @@ int Alu::parseAddress(const std::string &argument) {
|
||||
/// Finde die Position von '(', trenne die den String dort und
|
||||
/// addiere die umgewandelten Integer zur Adresse
|
||||
/// Bsp: 0(x1)
|
||||
const size_t pos = argument.find('(');
|
||||
if (pos != std::string::npos) {
|
||||
const auto immediate = std::stoi(argument.substr(0, pos));
|
||||
const auto register1 = std::stoi(argument.substr(pos + 1));
|
||||
if (const size_t pos = argument.find('('); pos != std::string::npos) {
|
||||
const auto immediate = std::stoi(argument.substr(0, pos + 1));
|
||||
const auto register1 = std::stoi(argument.substr(pos + 2));
|
||||
const auto address = immediate + register1;
|
||||
return address;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user