Beispiel #1
0
Opnd* OpndUtils::convertToXmmReg64(Opnd* xmmReg)
{
    assert(isXmmReg(xmmReg));
    RegName regName = xmmReg->getRegName();
    OpndSize size = getRegSize(regName);
    if (size == OpndSize_64) {
        return xmmReg;
    }
    TypeManager& typeMan = m_irManager->getTypeManager();
    Type* doubleType = typeMan.getDoubleType();
    unsigned regIndex = getRegIndex(regName);
    RegName regName64 = getRegName(OpndKind_XMMReg, OpndSize_64, regIndex);
    Opnd* xmm64 = m_irManager->newRegOpnd(doubleType, regName64);
    return xmm64;
}
Beispiel #2
0
void CONVERT::sCBW(THREADID tid, ADDRINT insAddress)
{
    TaintManager_Thread *pTmgrTls = getTmgrInTls(tid);
    REGINDEX regIndex = getRegIndex(REG_AL);

    if (pTmgrTls->isRegisterPartTainted(regIndex, 0))
    {
        _LOGTAINT(tid, insAddress, "CBW");
        // affectation à AX (enregistrement du TaintWord)
        pTmgrTls->updateTaintRegister<16>(REG_AX, std::make_shared<TaintWord>(
            X_SIGNEXTEND,
            ObjectSource(pTmgrTls->getRegisterPartTaint(regIndex, 0))));
    }
    else pTmgrTls->unTaintRegisterPart(regIndex, 1); // simple démarquage AH (AL l'est déjà)
} // cCBW