Обязательно ли конвертировать операнды в u_long для выполнения операций?Могу ли я просто сделать это напрямую? - PullRequest
0 голосов
/ 26 сентября 2019

Это в основном код, имитирующий процессор 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;
}

};

...