diff options
Diffstat (limited to 'miasm/jitter/arch')
| -rw-r--r-- | miasm/jitter/arch/JitCore_aarch64.c | 39 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_arm.c | 39 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_mep.c | 37 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_mips32.c | 39 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_msp430.c | 40 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_ppc32.c | 37 | ||||
| -rw-r--r-- | miasm/jitter/arch/JitCore_x86.c | 67 |
7 files changed, 10 insertions, 288 deletions
diff --git a/miasm/jitter/arch/JitCore_aarch64.c b/miasm/jitter/arch/JitCore_aarch64.c index c1a89285..7961f3cc 100644 --- a/miasm/jitter/arch/JitCore_aarch64.c +++ b/miasm/jitter/arch/JitCore_aarch64.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "../op_semantics.h" #include "JitCore_aarch64.h" @@ -252,39 +252,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) } -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - RAISE(PyExc_TypeError,"Cannot parse arguments"); - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ }; @@ -304,10 +271,6 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, - "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, - "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_arm.c b/miasm/jitter/arch/JitCore_arm.c index 13dcb3f4..b39ae4d2 100644 --- a/miasm/jitter/arch/JitCore_arm.c +++ b/miasm/jitter/arch/JitCore_arm.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "../op_semantics.h" #include "JitCore_arm.h" @@ -204,39 +204,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src); } -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - RAISE(PyExc_TypeError,"Cannot parse arguments"); - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - PyObject* cpu_set_interrupt_num(JitCpu* self, PyObject* args) { PyObject *item1; @@ -280,10 +247,6 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"set_interrupt_num", (PyCFunction)cpu_set_interrupt_num, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, - "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, - "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_mep.c b/miasm/jitter/arch/JitCore_mep.c index a69110bc..286a12ac 100644 --- a/miasm/jitter/arch/JitCore_mep.c +++ b/miasm/jitter/arch/JitCore_mep.c @@ -8,8 +8,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "JitCore_mep.h" @@ -269,39 +269,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) } -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret = 0x1337; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - return NULL; - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ }; @@ -314,8 +281,6 @@ static PyMethodDef JitCpu_methods[] = { {"set_gpreg", (PyCFunction)cpu_set_gpreg, METH_VARARGS, "X"}, {"get_exception", (PyCFunction)cpu_get_exception, METH_VARARGS, "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_mips32.c b/miasm/jitter/arch/JitCore_mips32.c index ce894e2a..dc576dfb 100644 --- a/miasm/jitter/arch/JitCore_mips32.c +++ b/miasm/jitter/arch/JitCore_mips32.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "../op_semantics.h" #include "JitCore_mips32.h" @@ -228,39 +228,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) } -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - RAISE(PyExc_TypeError,"Cannot parse arguments"); - - PyGetInt_uint64_t(py_addr, addr); - - if (!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ @@ -279,10 +246,6 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, - "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, - "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_msp430.c b/miasm/jitter/arch/JitCore_msp430.c index 3716756e..2bb51c68 100644 --- a/miasm/jitter/arch/JitCore_msp430.c +++ b/miasm/jitter/arch/JitCore_msp430.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "JitCore_msp430.h" @@ -204,40 +204,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) } -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - RAISE(PyExc_TypeError,"Cannot parse arguments"); - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ }; @@ -257,10 +223,6 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, - "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, - "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_ppc32.c b/miasm/jitter/arch/JitCore_ppc32.c index 49dc0b1e..086b140f 100644 --- a/miasm/jitter/arch/JitCore_ppc32.c +++ b/miasm/jitter/arch/JitCore_ppc32.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "JitCore_ppc32.h" @@ -161,39 +161,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) -PyObject * -vm_set_mem(JitCpu *self, PyObject *args) { - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char *buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret = 0x1337; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - return NULL; - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ }; @@ -207,8 +174,6 @@ static PyMethodDef JitCpu_methods[] = { {"get_exception", (PyCFunction)cpu_get_exception, METH_VARARGS, "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, {"get_spr_access", (PyCFunction)cpu_get_spr_access, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, "X"}, {NULL} /* Sentinel */ }; diff --git a/miasm/jitter/arch/JitCore_x86.c b/miasm/jitter/arch/JitCore_x86.c index 608893a7..361b18b4 100644 --- a/miasm/jitter/arch/JitCore_x86.c +++ b/miasm/jitter/arch/JitCore_x86.c @@ -5,8 +5,8 @@ #include "../compat_py23.h" #include "../queue.h" #include "../vm_mngr.h" -#include "../vm_mngr_py.h" #include "../bn.h" +#include "../vm_mngr_py.h" #include "../JitCore.h" #include "../op_semantics.h" #include "JitCore_x86.h" @@ -209,13 +209,7 @@ PyObject* cpu_set_gpreg(JitCpu* self, PyObject *args) case 128: { bn_t bn; - int j; PyObject* py_long = d_value; - PyObject* py_long_new; - PyObject* py_tmp; - PyObject* cst_32; - PyObject* cst_ffffffff; - uint64_t tmp; #if PY_MAJOR_VERSION >= 3 @@ -227,6 +221,8 @@ PyObject* cpu_set_gpreg(JitCpu* self, PyObject *args) RAISE(PyExc_TypeError,"arg must be int"); } #else + uint64_t tmp; + if (PyInt_Check(py_long)){ tmp = (uint64_t)PyInt_AsLong(py_long); py_long = PyLong_FromLong((long)tmp); @@ -240,25 +236,7 @@ PyObject* cpu_set_gpreg(JitCpu* self, PyObject *args) } #endif - - cst_ffffffff = PyLong_FromLong(0xffffffff); - cst_32 = PyLong_FromLong(32); - bn = bignum_from_int(0); - - for (j = 0; j < BN_BYTE_SIZE; j += 4) { - py_tmp = PyObject_CallMethod(py_long, "__and__", "O", cst_ffffffff); - tmp = PyLong_AsUnsignedLongMask(py_tmp); - Py_DECREF(py_tmp); - bn = bignum_lshift(bn, 32); - bn = bignum_or(bn, bignum_from_uint64(tmp)); - - py_long_new = PyObject_CallMethod(py_long, "__rshift__", "O", cst_32); - Py_DECREF(py_long); - py_long = py_long_new; - } - Py_DECREF(py_long); - Py_DECREF(cst_32); - Py_DECREF(cst_ffffffff); + bn = PyLong_to_bn(py_long); *(bn_t*)(((char*)(self->cpu)) + gpreg_dict[i].offset) = bignum_mask(bn, 128); } break; @@ -482,39 +460,6 @@ void MEM_WRITE_64(JitCpu* jitcpu, uint64_t addr, uint64_t src) -PyObject* vm_set_mem(JitCpu *self, PyObject* args) -{ - PyObject *py_addr; - PyObject *py_buffer; - Py_ssize_t py_length; - - char * buffer; - Py_ssize_t pysize; - uint64_t addr; - int ret; - - if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer)) - RAISE(PyExc_TypeError,"Cannot parse arguments"); - - PyGetInt_uint64_t(py_addr, addr); - - if(!PyBytes_Check(py_buffer)) - RAISE(PyExc_TypeError,"arg must be bytes"); - - pysize = PyBytes_Size(py_buffer); - if (pysize < 0) { - RAISE(PyExc_TypeError,"Python error"); - } - PyBytes_AsStringAndSize(py_buffer, &buffer, &py_length); - - ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, pysize); - if (ret < 0) - RAISE(PyExc_TypeError,"arg must be str"); - - Py_INCREF(Py_None); - return Py_None; -} - static PyMemberDef JitCpu_members[] = { {NULL} /* Sentinel */ }; @@ -538,10 +483,6 @@ static PyMethodDef JitCpu_methods[] = { "X"}, {"set_exception", (PyCFunction)cpu_set_exception, METH_VARARGS, "X"}, - {"set_mem", (PyCFunction)vm_set_mem, METH_VARARGS, - "X"}, - {"get_mem", (PyCFunction)vm_get_mem, METH_VARARGS, - "X"}, {"get_interrupt_num", (PyCFunction)cpu_get_interrupt_num, METH_VARARGS, "X"}, {"set_interrupt_num", (PyCFunction)cpu_set_interrupt_num, METH_VARARGS, |