static PyObject *Triton_setRegValue(PyObject *self, PyObject *args) { PyObject *reg; PyObject *value; uint128 va; uint64 tr; /* Extract arguments */ PyArg_ParseTuple(args, "O|O", ®, &value); if (!PyLong_Check(reg) && !PyInt_Check(reg)) return PyErr_Format(PyExc_TypeError, "setRegValue(): expected an IDREF.REG as first argument"); if (!PyLong_Check(value) && !PyInt_Check(value)) return PyErr_Format(PyExc_TypeError, "setRegValue(): expected an integer as second argument"); va = PyLongObjectToUint128(value); tr = PyLong_AsLong(reg); if (tr >= ID_XMM0 && tr <= ID_XMM15) ap.setSSERegisterValue(tr, va); else ap.setRegisterValue(tr, va); return Py_None; }
static PyObject *Triton_setRegValue(PyObject *self, PyObject *args) { PyObject *reg = nullptr; PyObject *value = nullptr; uint128 va; uint64 tr; /* Extract arguments */ PyArg_ParseTuple(args, "|OO", ®, &value); if (reg == nullptr || (!PyLong_Check(reg) && !PyInt_Check(reg))) return PyErr_Format(PyExc_TypeError, "setRegValue(): expected an IDREF.REG as first argument"); if (value == nullptr || (!PyLong_Check(value) && !PyInt_Check(value))) return PyErr_Format(PyExc_TypeError, "setRegValue(): expected an integer as second argument"); va = PyLongObjectToUint128(value); tr = PyLong_AsLongLong(reg); RegisterOperand ro = createTmpReg(tr); if (isSSERegId(tr)) ap.setSSERegisterValue(ro, va); else ap.setRegisterValue(ro, boost::numeric_cast<uint64>(va)); Py_INCREF(Py_None); return Py_None; }