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); } }