Это в основном код, имитирующий процессор MIPS уровня команд.Класс для ALU показан ниже.
class ALU {public: bitset <32> ALUresult;bitset <32> ALUOperation (bitset <3> ALUOP, bitset <32> oprand1, bitset <32> oprand2) {// реализовать операции ALU самостоятельно.длинный результат без знака;
if(ALUOP.to_string() == "001"){
result = oprand1.to_ulong() + oprand2.to_ulong(); // addu operation
}
else if(ALUOP.to_string() == "011"){
result = oprand1.to_ulong() - oprand2.to_ulong(); // subu operation
}
else if(ALUOP.to_string() == "100"){
result = oprand1.to_ulong() & oprand2.to_ulong(); // and operation
}
else if(ALUOP.to_string() == "101"){
result = oprand1.to_ulong() | oprand2.to_ulong(); // or operation
}
else if(ALUOP.to_string() == "111"){
result = ~(oprand1.to_ulong() | oprand2.to_ulong()); // nor operation
}
bitset<32> res((int)result);
ALUresult = res;
return ALUresult;
}
};