sim: bugfix for overflow and so ...
[calu.git] / 3c_disasm / instr / cmpi.cpp
index 0de9659ed7511d583661ceb95224dc0bb61a31d8..2a80bf78cbb6338427d2127aff4e768eb42f0122 100644 (file)
@@ -41,6 +41,7 @@ Ccmpi::Ccmpi()
        name = "cmpi";
 }
 
+
 void Ccmpi::evalInstr()
 {
        argbits >>= 3;
@@ -57,7 +58,7 @@ void Ccmpi::execInstr()
        //cout << "should exec " << this->toString() << endl;
        CDat ra = this->m_cpu->getRegister(m_ra);
        CDatd reg = ra - this->m_imm;
-       this->m_cpu->updateFlags(reg, ra, this->m_imm);
+       this->m_cpu->updateFlags(reg, ra, (~this->m_imm)+1);
 }
 
 std::string Ccmpi::toString()
@@ -69,7 +70,7 @@ std::string Ccmpi::toString()
        if(m_s) op << 'S';
        if(m_c) op << 'C';
 
-       op << this->getConditionFlag() << " r" << m_rd << ", r" << m_ra << ", " << m_imm;
+       op << this->getConditionFlag() << " r" << m_ra << ", " << m_imm;
 
        return op.str();
 }