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