From ed8f732545843b7ed5eeeccad2be1310b2d01283 Mon Sep 17 00:00:00 2001 From: black Date: Mon, 7 Jul 2025 17:01:44 +0200 Subject: [PATCH] added immediate ALU commands --- src/components/Alu.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/components/Alu.cpp b/src/components/Alu.cpp index fbbf213..62a499a 100644 --- a/src/components/Alu.cpp +++ b/src/components/Alu.cpp @@ -45,6 +45,21 @@ void Alu::calculate(const std::vector &commandVector) { const auto register2 = Register::getInstance().getRegister(arg3); const auto result = register1 ^ register2; Register::getInstance().setRegister(arg1, result); + } else if (command == "addi") { + const auto register1 = Register::getInstance().getRegister(arg2); + const auto immediate = parseArgument(commandVector.at(1)); + const auto result = register1 + immediate; + Register::getInstance().setRegister(arg1, result); + } else if (command == "andi") { + const auto register1 = Register::getInstance().getRegister(arg2); + const auto immediate = parseArgument(commandVector.at(1)); + const auto result = register1 & immediate; + Register::getInstance().setRegister(arg1, result); + } else if (command == "ori") { + const auto register1 = Register::getInstance().getRegister(arg2); + const auto immediate = parseArgument(commandVector.at(1)); + const auto result = register1 | immediate; + Register::getInstance().setRegister(arg1, result); } }