diff --git a/src/components/Alu.cpp b/src/components/Alu.cpp index d6e74e4..01559c5 100644 --- a/src/components/Alu.cpp +++ b/src/components/Alu.cpp @@ -167,7 +167,7 @@ void Alu::calculate(const std::vector &commandVector) { const auto posOffset = reg.getRegister(arg2); // Setzt die stream Position auf den gegebenen Wert & erhöht sie um den angegebenen Offset man.setStreamPosition(streamPosLabel); - for (int i = 0; i < posOffset; ++i) { + for (int i = 1; i < posOffset; ++i) { man.gotoNextStreamLine(); } } else if (command == "j") { @@ -176,6 +176,12 @@ void Alu::calculate(const std::vector &commandVector) { for (int i = 1; i < arg1; i++) { man.gotoNextStreamLine(); } + } else if (command == "slli") { + // Shift Left Logical Immediate Befehl + const auto register1 = reg.getRegister(arg2); + // Bitshifte den Wert aus Register1 mit dem immediate value + const auto result = register1 << arg3; + reg.setRegister(arg1, result); } else { std::cerr << "Befehl " << command << " wurde nicht gefunden!"; }