#include <Python.h>
#include "../JitCore.h"
#include "structmember.h"
#include <stdint.h>
#include <inttypes.h>
#include "../queue.h"
#include "../vm_mngr.h"
#include "../vm_mngr_py.h"
#include "JitCore_msp430.h"
Go to the source code of this file.
|
PyObject * | cpu_get_gpreg (JitCpu *self) |
|
PyObject * | cpu_set_gpreg (JitCpu *self, PyObject *args) |
|
PyObject * | cpu_init_regs (JitCpu *self) |
|
void | dump_gpregs (vm_cpu_t *vmcpu) |
|
PyObject * | cpu_dump_gpregs (JitCpu *self, PyObject *args) |
|
PyObject * | cpu_set_exception (JitCpu *self, PyObject *args) |
|
PyObject * | cpu_get_exception (JitCpu *self, PyObject *args) |
|
void | check_automod (JitCpu *jitcpu, uint64_t addr, uint64_t size) |
|
void | MEM_WRITE_08 (JitCpu *jitcpu, uint64_t addr, uint8_t src) |
|
void | MEM_WRITE_16 (JitCpu *jitcpu, uint64_t addr, uint16_t src) |
|
void | MEM_WRITE_32 (JitCpu *jitcpu, uint64_t addr, uint32_t src) |
|
void | MEM_WRITE_64 (JitCpu *jitcpu, uint64_t addr, uint64_t src) |
|
PyObject * | vm_set_mem (JitCpu *self, PyObject *args) |
|
static int | JitCpu_init (JitCpu *self, PyObject *args, PyObject *kwds) |
|
| getset_reg_u16 (PC) |
|
| getset_reg_u16 (SP) |
|
| getset_reg_u16 (R3) |
|
| getset_reg_u16 (R4) |
|
| getset_reg_u16 (R5) |
|
| getset_reg_u16 (R6) |
|
| getset_reg_u16 (R7) |
|
| getset_reg_u16 (R8) |
|
| getset_reg_u16 (R9) |
|
| getset_reg_u16 (R10) |
|
| getset_reg_u16 (R11) |
|
| getset_reg_u16 (R12) |
|
| getset_reg_u16 (R13) |
|
| getset_reg_u16 (R14) |
|
| getset_reg_u16 (R15) |
|
| getset_reg_u16 (zf) |
|
| getset_reg_u16 (nf) |
|
| getset_reg_u16 (of) |
|
| getset_reg_u16 (cf) |
|
| getset_reg_u16 (cpuoff) |
|
| getset_reg_u16 (gie) |
|
| getset_reg_u16 (osc) |
|
| getset_reg_u16 (scg0) |
|
| getset_reg_u16 (scg1) |
|
| getset_reg_u16 (res) |
|
PyObject * | get_gpreg_offset_all (void) |
|
PyMODINIT_FUNC | initJitCore_msp430 (void) |
|
void check_automod |
( |
JitCpu * |
jitcpu, |
|
|
uint64_t |
addr, |
|
|
uint64_t |
size |
|
) |
| |
Definition at line 185 of file JitCore_msp430.c.
191 result = PyObject_CallMethod(jitcpu->
jitter,
"automod_cb",
"LL", addr, size);
#define EXCEPT_CODE_AUTOMOD
PyObject_HEAD PyObject * pyvm
PyObject* cpu_dump_gpregs |
( |
JitCpu * |
self, |
|
|
PyObject * |
args |
|
) |
| |
PyObject* cpu_get_exception |
( |
JitCpu * |
self, |
|
|
PyObject * |
args |
|
) |
| |
PyObject* cpu_get_gpreg |
( |
JitCpu * |
self | ) |
|
PyObject* cpu_init_regs |
( |
JitCpu * |
self | ) |
|
PyObject* cpu_set_exception |
( |
JitCpu * |
self, |
|
|
PyObject * |
args |
|
) |
| |
Definition at line 161 of file JitCore_msp430.c.
166 if (!PyArg_ParseTuple(args,
"O", &item1))
#define PyGetInt(item, value)
PyObject* cpu_set_gpreg |
( |
JitCpu * |
self, |
|
|
PyObject * |
args |
|
) |
| |
Definition at line 86 of file JitCore_msp430.c.
89 PyObject *d_key, *d_value = NULL;
92 unsigned int i, found;
94 if (!PyArg_ParseTuple(args,
"O", &dict))
96 if(!PyDict_Check(dict))
97 RAISE(PyExc_TypeError,
"arg must be dict");
98 while(PyDict_Next(dict, &pos, &d_key, &d_value)){
99 if(!PyString_Check(d_key))
100 RAISE(PyExc_TypeError,
"key must be str");
115 fprintf(stderr,
"unkown key: %s\n", PyString_AsString(d_key));
116 RAISE(PyExc_ValueError,
"unkown reg");
#define RAISE(errtype, msg)
#define PyGetInt(item, value)
Definition at line 134 of file JitCore_msp430.c.
137 printf(
"PC %.4"PRIX32
" SP %.4"PRIX32
" R3 %.4"PRIX32
" ",
138 vmcpu->
PC, vmcpu->
SP, vmcpu->
R3);
139 printf(
"R4 %.4"PRIX32
" R5 %.4"PRIX32
" R6 %.4"PRIX32
" R7 %.4"PRIX32
"\n",
140 vmcpu->
R4, vmcpu->
R5, vmcpu->
R6, vmcpu->
R7);
141 printf(
"R8 %.4"PRIX32
" R9 %.4"PRIX32
" R10 %.4"PRIX32
" R11 %.4"PRIX32
" ",
142 vmcpu->
R8, vmcpu->
R9, vmcpu->
R10, vmcpu->
R11);
143 printf(
"R12 %.4"PRIX32
" R13 %.4"PRIX32
" R14 %.4"PRIX32
" R15 %.4"PRIX32
"\n",
145 printf(
"zf %.4"PRIX32
" nf %.4"PRIX32
" of %.4"PRIX32
" cf %.4"PRIX32
"\n",
146 vmcpu->
zf, vmcpu->
nf, vmcpu->
of, vmcpu->
cf);
PyObject* get_gpreg_offset_all |
( |
void |
| ) |
|
getset_reg_u16 |
( |
cpuoff |
| ) |
|
PyMODINIT_FUNC initJitCore_msp430 |
( |
void |
| ) |
|
Definition at line 558 of file JitCore_msp430.c.
574 PyModule_AddObject(m,
"JitCpu", (PyObject *)&
JitCpuType);
static PyTypeObject JitCpuType
static PyMethodDef JitCore_msp430_Methods[]
static PyObject * JitCore_msp430_Error
static int JitCpu_init |
( |
JitCpu * |
self, |
|
|
PyObject * |
args, |
|
|
PyObject * |
kwds |
|
) |
| |
|
static |
Definition at line 277 of file JitCore_msp430.c.
279 self->cpu = malloc(
sizeof(
vm_cpu_t));
280 if (self->
cpu == NULL) {
281 fprintf(stderr,
"cannot alloc vm_cpu_t\n");
void MEM_WRITE_08 |
( |
JitCpu * |
jitcpu, |
|
|
uint64_t |
addr, |
|
|
uint8_t |
src |
|
) |
| |
Definition at line 196 of file JitCore_msp430.c.
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
void vm_MEM_WRITE_08(vm_mngr_t *vm_mngr, uint64_t addr, unsigned char src)
void MEM_WRITE_16 |
( |
JitCpu * |
jitcpu, |
|
|
uint64_t |
addr, |
|
|
uint16_t |
src |
|
) |
| |
Definition at line 202 of file JitCore_msp430.c.
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
void vm_MEM_WRITE_16(vm_mngr_t *vm_mngr, uint64_t addr, unsigned short src)
PyObject_HEAD PyObject * pyvm
void MEM_WRITE_32 |
( |
JitCpu * |
jitcpu, |
|
|
uint64_t |
addr, |
|
|
uint32_t |
src |
|
) |
| |
Definition at line 208 of file JitCore_msp430.c.
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
void vm_MEM_WRITE_32(vm_mngr_t *vm_mngr, uint64_t addr, unsigned int src)
void MEM_WRITE_64 |
( |
JitCpu * |
jitcpu, |
|
|
uint64_t |
addr, |
|
|
uint64_t |
src |
|
) |
| |
Definition at line 214 of file JitCore_msp430.c.
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
void vm_MEM_WRITE_64(vm_mngr_t *vm_mngr, uint64_t addr, uint64_t src)
PyObject_HEAD PyObject * pyvm
PyObject* vm_set_mem |
( |
JitCpu * |
self, |
|
|
PyObject * |
args |
|
) |
| |
Definition at line 221 of file JitCore_msp430.c.
225 Py_ssize_t py_length;
232 if (!PyArg_ParseTuple(args,
"OO", &py_addr, &py_buffer))
237 if(!PyString_Check(py_buffer))
238 RAISE(PyExc_TypeError,
"arg must be str");
240 size = PyString_Size(py_buffer);
241 PyString_AsStringAndSize(py_buffer, &buffer, &py_length);
245 RAISE(PyExc_TypeError,
"arg must be str");
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
#define RAISE(errtype, msg)
#define PyGetInt(item, value)
int vm_write_mem(vm_mngr_t *vm_mngr, uint64_t addr, char *buffer, uint64_t size)
PyObject_HEAD PyObject * pyvm
Initial value:= { {.name =
"PC", .offset = offsetof(
vm_cpu_t,
PC)},
{.name =
"cpuoff", .offset = offsetof(
vm_cpu_t,
zf)},
{.name =
"gie", .offset = offsetof(
vm_cpu_t,
zf)},
{.name =
"osc", .offset = offsetof(
vm_cpu_t,
zf)},
{.name =
"scg0", .offset = offsetof(
vm_cpu_t,
zf)},
{.name =
"scg1", .offset = offsetof(
vm_cpu_t,
zf)},
{.name =
"res", .offset = offsetof(
vm_cpu_t,
zf)},
}
Definition at line 12 of file JitCore_msp430.c.
PyObject* JitCore_msp430_Error |
|
static |
PyMethodDef JitCore_msp430_Methods[] |
|
static |
Initial value:= {
{NULL, NULL, 0, NULL}
}
PyObject * get_gpreg_offset_all(void)
Definition at line 545 of file JitCore_msp430.c.
PyGetSetDef JitCpu_getseters[] |
|
static |
PyMemberDef JitCpu_members[] |
|
static |
PyMethodDef JitCpu_methods[] |
|
static |
Initial value:= {
"X"},
"X"},
"X"},
"X"},
"X"},
"X"},
{
"set_mem", (PyCFunction)
vm_set_mem, METH_VARARGS,
"X"},
{
"get_mem", (PyCFunction)
vm_get_mem, METH_VARARGS,
"X"},
{NULL}
}
PyObject * cpu_set_gpreg(JitCpu *self, PyObject *args)
PyObject * cpu_get_exception(JitCpu *self, PyObject *args)
PyObject * cpu_init_regs(JitCpu *self)
PyObject * vm_get_mem(JitCpu *self, PyObject *args)
PyObject * cpu_set_exception(JitCpu *self, PyObject *args)
PyObject * vm_set_mem(JitCpu *self, PyObject *args)
PyObject * cpu_dump_gpregs(JitCpu *self, PyObject *args)
PyObject * cpu_get_gpreg(JitCpu *self)
Definition at line 256 of file JitCore_msp430.c.