本文整理汇总了C++中SymbolicVariable::getSymVarId方法的典型用法代码示例。如果您正苦于以下问题:C++ SymbolicVariable::getSymVarId方法的具体用法?C++ SymbolicVariable::getSymVarId怎么用?C++ SymbolicVariable::getSymVarId使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SymbolicVariable
的用法示例。
在下文中一共展示了SymbolicVariable::getSymVarId方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convertRegToSymVar
uint64 SymbolicEngine::convertRegToSymVar(uint64 regId, uint64 symVarSize)
{
SymbolicVariable *symVar = nullptr;
SymbolicElement *element = nullptr;
std::stringstream newExpr;
uint64 regSymId = UNSET;
if (regId >= ID_LAST_ITEM)
throw std::runtime_error("SymbolicEngine::convertRegToSymVar() - Invalid register ID");
regSymId = this->getRegSymbolicID(regId);
if (regSymId == UNSET)
throw std::runtime_error("SymbolicEngine::convertRegToSymVar() - This register ID is UNSET");
element = this->getElementFromId(regSymId);
if (element == nullptr)
return UNSET;
if (symVarSize != BYTE_SIZE && symVarSize != WORD_SIZE && symVarSize != DWORD_SIZE && symVarSize != QWORD_SIZE && symVarSize != DQWORD_SIZE)
throw std::runtime_error("SymbolicEngine::convertRegToSymVar() - Invalid symVarSize");
symVar = this->addSymbolicVariable(SymVar::kind::REG, regId, symVarSize);
newExpr << symVar->getSymVarName();
element->setSrcExpr(newExpr);
return symVar->getSymVarId();
}
示例2: convertMemToSymVar
uint64 SymbolicEngine::convertMemToSymVar(uint64 memAddr, uint64 symVarSize)
{
SymbolicVariable *symVar = nullptr;
SymbolicElement *element = nullptr;
std::stringstream newExpr;
uint64 memSymId = UNSET;
memSymId = this->getMemSymbolicID(memAddr);
if (memSymId == UNSET)
throw std::runtime_error("SymbolicEngine::convertMemToSymVar() - This memory address is UNSET");
element = this->getElementFromId(memSymId);
if (element == nullptr)
return UNSET;
if (symVarSize != BYTE_SIZE && symVarSize != WORD_SIZE && symVarSize != DWORD_SIZE && symVarSize != QWORD_SIZE && symVarSize != DQWORD_SIZE)
throw std::runtime_error("SymbolicEngine::convertMemToSymVar() - Invalid symVarSize");
symVar = this->addSymbolicVariable(SymVar::kind::MEM, memAddr, symVarSize);
newExpr << symVar->getSymVarName();
element->setSrcExpr(newExpr);
return symVar->getSymVarId();
}
示例3: convertExprToSymVar
/*
* Converts an expression ID to a symbolic variable.
* e.g:
* #43 = (_ bv10 8)
* convertExprToSymVar(43, 8)
* #43 = SymVar_4
*/
uint64 SymbolicEngine::convertExprToSymVar(uint64 exprId, uint64 symVarSize)
{
SymbolicVariable *symVar = nullptr;
SymbolicElement *element = this->getElementFromId(exprId);
std::stringstream newExpr;
if (element == nullptr)
return UNSET;
if (symVarSize != BYTE_SIZE && symVarSize != WORD_SIZE && symVarSize != DWORD_SIZE && symVarSize != QWORD_SIZE && symVarSize != DQWORD_SIZE)
throw std::runtime_error("SymbolicEngine::convertExprToSymVar() - Invalid symVarSize");
symVar = this->addSymbolicVariable(SymVar::kind::UNDEF, 0, symVarSize);
newExpr << symVar->getSymVarName();
element->setSrcExpr(newExpr);
return symVar->getSymVarId();
}
示例4: Py_BuildValue
static PyObject *SymbolicVariable_getId(PyObject *self, PyObject *noarg) {
SymbolicVariable *variable = PySymbolicVariable_AsSymbolicVariable(self);
return Py_BuildValue("k", variable->getSymVarId());
}