static PyObject *Triton_getRegs(PyObject *self, PyObject *noargs) { PyObject *regs = xPyDict_New(); /* Build all Registers */ for (uint64 regId = ID_RAX; regId < ID_RFLAGS; regId++){ PyObject *reg = xPyDict_New(); if (regId >= ID_XMM0 && regId <= ID_XMM15) PyDict_SetItemString(reg, "concreteValue", uint128ToPyLongObject(ap.getSSERegisterValue(regId))); else PyDict_SetItemString(reg, "concreteValue", Py_BuildValue("k", ap.getRegisterValue(regId))); PyDict_SetItemString(reg, "symbolicExpr", Py_BuildValue("k", ap.getRegSymbolicID(regId))); PyDict_SetItem(regs, Py_BuildValue("k", regId), reg); } /* Build all Flags */ for (uint64 flagId = ID_AF; flagId <= ID_ZF; flagId++){ PyObject *flag = xPyDict_New(); PyDict_SetItemString(flag, "concreteValue", Py_BuildValue("k", ap.getFlagValue(flagId))); PyDict_SetItemString(flag, "symbolicExpr", Py_BuildValue("k", ap.getRegSymbolicID(flagId))); PyDict_SetItem(regs, Py_BuildValue("k", flagId), flag); } return regs; }
static PyObject *Triton_getRegSymbolicID(PyObject *self, PyObject *reg) { if (!PyLong_Check(reg) && !PyInt_Check(reg)) return PyErr_Format(PyExc_TypeError, "getRegSymbolicID(): expected a register id (integer) as argument"); return Py_BuildValue("k", ap.getRegSymbolicID(PyLong_AsLong(reg))); }
static PyObject *Triton_getRegSymbolicID(PyObject *self, PyObject *reg) { RegisterOperand ro; uint64 regId = 0; if (!PyLong_Check(reg) && !PyInt_Check(reg)) return PyErr_Format(PyExc_TypeError, "getRegSymbolicID(): expected a register id (integer) as argument"); regId = PyLong_AsLongLong(reg); ro = createTmpReg(regId); return Py_BuildValue("k", ap.getRegSymbolicID(ro)); }