Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Functions | Variables
JitCore_msp430.c File Reference
#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"
+ Include dependency graph for JitCore_msp430.c:

Go to the source code of this file.

Functions

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)
 

Variables

reg_dict gpreg_dict []
 
static PyMemberDef JitCpu_members []
 
static PyMethodDef JitCpu_methods []
 
static PyGetSetDef JitCpu_getseters []
 
static PyTypeObject JitCpuType
 
static PyMethodDef JitCore_msp430_Methods []
 
static PyObject * JitCore_msp430_Error
 

Function Documentation

void check_automod ( JitCpu jitcpu,
uint64_t  addr,
uint64_t  size 
)

Definition at line 185 of file JitCore_msp430.c.

186 {
187  PyObject *result;
188 
189  if (!(((VmMngr*)jitcpu->pyvm)->vm_mngr.exception_flags & EXCEPT_CODE_AUTOMOD))
190  return;
191  result = PyObject_CallMethod(jitcpu->jitter, "automod_cb", "LL", addr, size);
192  Py_DECREF(result);
193 
194 }
#define EXCEPT_CODE_AUTOMOD
Definition: vm_mngr.h:130
PyObject * jitter
Definition: JitCore.h:96
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the caller graph for this function:

PyObject* cpu_dump_gpregs ( JitCpu self,
PyObject *  args 
)

Definition at line 150 of file JitCore_msp430.c.

151 {
152  vm_cpu_t* vmcpu;
153 
154  vmcpu = self->cpu;
155  dump_gpregs(vmcpu);
156  Py_INCREF(Py_None);
157  return Py_None;
158 }
void dump_gpregs(vm_cpu_t *vmcpu)

+ Here is the call graph for this function:

PyObject* cpu_get_exception ( JitCpu self,
PyObject *  args 
)

Definition at line 176 of file JitCore_msp430.c.

177 {
178  return PyLong_FromUnsignedLongLong((uint64_t)(((vm_cpu_t*)self->cpu)->exception_flags));
179 }
void * cpu
Definition: JitCore.h:97
PyObject* cpu_get_gpreg ( JitCpu self)

Definition at line 47 of file JitCore_msp430.c.

48 {
49  PyObject *dict = PyDict_New();
50  PyObject *o;
51 
52  get_reg(PC);
53  get_reg(SP);
54  //get_reg(SR);
55  get_reg(R3);
56  get_reg(R4);
57  get_reg(R5);
58  get_reg(R6);
59  get_reg(R7);
60  get_reg(R8);
61  get_reg(R9);
62  get_reg(R10);
63  get_reg(R11);
64  get_reg(R12);
65  get_reg(R13);
66  get_reg(R14);
67  get_reg(R15);
68 
69  get_reg(zf);
70  get_reg(nf);
71  get_reg(of);
72  get_reg(cf);
73 
74  get_reg(cpuoff);
75  get_reg(gie);
76  get_reg(osc);
77  get_reg(scg0);
78  get_reg(scg1);
79  get_reg(res);
80 
81 
82  return dict;
83 }
#define get_reg(reg)
Definition: JitCore.h:74
PyObject* cpu_init_regs ( JitCpu self)

Definition at line 125 of file JitCore_msp430.c.

126 {
127  memset(self->cpu, 0, sizeof(vm_cpu_t));
128 
129  Py_INCREF(Py_None);
130  return Py_None;
131 
132 }
void * cpu
Definition: JitCore.h:97
PyObject* cpu_set_exception ( JitCpu self,
PyObject *  args 
)

Definition at line 161 of file JitCore_msp430.c.

162 {
163  PyObject *item1;
164  uint64_t i;
165 
166  if (!PyArg_ParseTuple(args, "O", &item1))
167  return NULL;
168 
169  PyGetInt(item1, i);
170 
171  ((vm_cpu_t*)self->cpu)->exception_flags = i;
172  Py_INCREF(Py_None);
173  return Py_None;
174 }
#define PyGetInt(item, value)
Definition: JitCore.h:8
void * cpu
Definition: JitCore.h:97
PyObject* cpu_set_gpreg ( JitCpu self,
PyObject *  args 
)

Definition at line 86 of file JitCore_msp430.c.

87 {
88  PyObject* dict;
89  PyObject *d_key, *d_value = NULL;
90  Py_ssize_t pos = 0;
91  uint64_t val;
92  unsigned int i, found;
93 
94  if (!PyArg_ParseTuple(args, "O", &dict))
95  return NULL;
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");
101 
102  PyGetInt(d_value, val);
103 
104  found = 0;
105  for (i=0; i < sizeof(gpreg_dict)/sizeof(reg_dict); i++){
106  if (strcmp(PyString_AsString(d_key), gpreg_dict[i].name))
107  continue;
108  *((uint32_t*)(((char*)(self->cpu)) + gpreg_dict[i].offset)) = val;
109  found = 1;
110  break;
111  }
112 
113  if (found)
114  continue;
115  fprintf(stderr, "unkown key: %s\n", PyString_AsString(d_key));
116  RAISE(PyExc_ValueError, "unkown reg");
117  }
118  Py_INCREF(Py_None);
119  return Py_None;
120 }
#define RAISE(errtype, msg)
Definition: JitCore.h:4
#define PyGetInt(item, value)
Definition: JitCore.h:8
string name
Definition: ir2C.py:22
size_t offset
Definition: JitCore.h:103
reg_dict gpreg_dict[]
void dump_gpregs ( vm_cpu_t vmcpu)

Definition at line 134 of file JitCore_msp430.c.

135 {
136 
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",
144  vmcpu->R12, vmcpu->R13, vmcpu->R14, vmcpu->R15);
145  printf("zf %.4"PRIX32" nf %.4"PRIX32" of %.4"PRIX32" cf %.4"PRIX32"\n",
146  vmcpu->zf, vmcpu->nf, vmcpu->of, vmcpu->cf);
147 }
uint32_t R11
Definition: JitCore_arm.h:18
uint32_t R6
Definition: JitCore_arm.h:13
uint32_t R15
uint32_t R14
uint32_t R8
Definition: JitCore_arm.h:15
uint32_t cf
uint64_t PC
uint32_t R10
Definition: JitCore_arm.h:17
uint32_t R13
uint32_t nf
uint32_t R5
Definition: JitCore_arm.h:12
uint32_t of
uint32_t R12
Definition: JitCore_arm.h:19
uint32_t R3
Definition: JitCore_arm.h:10
uint32_t R4
Definition: JitCore_arm.h:11
uint32_t R9
Definition: JitCore_arm.h:16
uint32_t R7
Definition: JitCore_arm.h:14
uint64_t SP
uint32_t zf

+ Here is the caller graph for this function:

PyObject* get_gpreg_offset_all ( void  )

Definition at line 315 of file JitCore_msp430.c.

316 {
317  PyObject *dict = PyDict_New();
318  PyObject *o;
320  get_reg_off(exception_flags_new);
321  get_reg_off(PC);
322  get_reg_off(SP);
323  get_reg_off(R3);
324  get_reg_off(R4);
325  get_reg_off(R5);
326  get_reg_off(R6);
327  get_reg_off(R7);
328  get_reg_off(R8);
329  get_reg_off(R9);
330  get_reg_off(R10);
331  get_reg_off(R11);
332  get_reg_off(R12);
333  get_reg_off(R13);
334  get_reg_off(R14);
335  get_reg_off(R15);
336  get_reg_off(PC_new);
337  get_reg_off(SP_new);
338  get_reg_off(SR_new);
339  get_reg_off(R3_new);
340  get_reg_off(R4_new);
341  get_reg_off(R5_new);
342  get_reg_off(R6_new);
343  get_reg_off(R7_new);
344  get_reg_off(R8_new);
345  get_reg_off(R9_new);
346  get_reg_off(R10_new);
347  get_reg_off(R11_new);
348  get_reg_off(R12_new);
349  get_reg_off(R13_new);
350  get_reg_off(R14_new);
351  get_reg_off(R15_new);
352  get_reg_off(zf);
353  get_reg_off(nf);
354  get_reg_off(of);
355  get_reg_off(cf);
357  get_reg_off(gie);
358  get_reg_off(osc);
359  get_reg_off(scg0);
360  get_reg_off(scg1);
361  get_reg_off(res);
362  get_reg_off(zf_new);
363  get_reg_off(nf_new);
364  get_reg_off(of_new);
365  get_reg_off(cf_new);
366  get_reg_off(cpuoff_new);
367  get_reg_off(gie_new);
368  get_reg_off(osc_new);
369  get_reg_off(scg0_new);
370  get_reg_off(scg1_new);
371  get_reg_off(res_new);
372  get_reg_off(pfmem08_0);
373  get_reg_off(pfmem08_1);
374  get_reg_off(pfmem08_2);
375  get_reg_off(pfmem08_3);
376  get_reg_off(pfmem08_4);
377  get_reg_off(pfmem08_5);
378  get_reg_off(pfmem08_6);
379  get_reg_off(pfmem08_7);
380  get_reg_off(pfmem08_8);
381  get_reg_off(pfmem08_9);
382  get_reg_off(pfmem08_10);
383  get_reg_off(pfmem08_11);
384  get_reg_off(pfmem08_12);
385  get_reg_off(pfmem08_13);
386  get_reg_off(pfmem08_14);
387  get_reg_off(pfmem08_15);
388  get_reg_off(pfmem08_16);
389  get_reg_off(pfmem08_17);
390  get_reg_off(pfmem08_18);
391  get_reg_off(pfmem08_19);
392  get_reg_off(pfmem16_0);
393  get_reg_off(pfmem16_1);
394  get_reg_off(pfmem16_2);
395  get_reg_off(pfmem16_3);
396  get_reg_off(pfmem16_4);
397  get_reg_off(pfmem16_5);
398  get_reg_off(pfmem16_6);
399  get_reg_off(pfmem16_7);
400  get_reg_off(pfmem16_8);
401  get_reg_off(pfmem16_9);
402  get_reg_off(pfmem16_10);
403  get_reg_off(pfmem16_11);
404  get_reg_off(pfmem16_12);
405  get_reg_off(pfmem16_13);
406  get_reg_off(pfmem16_14);
407  get_reg_off(pfmem16_15);
408  get_reg_off(pfmem16_16);
409  get_reg_off(pfmem16_17);
410  get_reg_off(pfmem16_18);
411  get_reg_off(pfmem16_19);
412  get_reg_off(pfmem32_0);
413  get_reg_off(pfmem32_1);
414  get_reg_off(pfmem32_2);
415  get_reg_off(pfmem32_3);
416  get_reg_off(pfmem32_4);
417  get_reg_off(pfmem32_5);
418  get_reg_off(pfmem32_6);
419  get_reg_off(pfmem32_7);
420  get_reg_off(pfmem32_8);
421  get_reg_off(pfmem32_9);
422  get_reg_off(pfmem32_10);
423  get_reg_off(pfmem32_11);
424  get_reg_off(pfmem32_12);
425  get_reg_off(pfmem32_13);
426  get_reg_off(pfmem32_14);
427  get_reg_off(pfmem32_15);
428  get_reg_off(pfmem32_16);
429  get_reg_off(pfmem32_17);
430  get_reg_off(pfmem32_18);
431  get_reg_off(pfmem32_19);
432  get_reg_off(pfmem64_0);
433  get_reg_off(pfmem64_1);
434  get_reg_off(pfmem64_2);
435  get_reg_off(pfmem64_3);
436  get_reg_off(pfmem64_4);
437  get_reg_off(pfmem64_5);
438  get_reg_off(pfmem64_6);
439  get_reg_off(pfmem64_7);
440  get_reg_off(pfmem64_8);
441  get_reg_off(pfmem64_9);
442  get_reg_off(pfmem64_10);
443  get_reg_off(pfmem64_11);
444  get_reg_off(pfmem64_12);
445  get_reg_off(pfmem64_13);
446  get_reg_off(pfmem64_14);
447  get_reg_off(pfmem64_15);
448  get_reg_off(pfmem64_16);
449  get_reg_off(pfmem64_17);
450  get_reg_off(pfmem64_18);
451  get_reg_off(pfmem64_19);
452  return dict;
453 }
#define get_reg_off(reg)
Definition: JitCore.h:81
tuple exception_flags
Definition: regs.py:7
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  )
PyMODINIT_FUNC initJitCore_msp430 ( void  )

Definition at line 558 of file JitCore_msp430.c.

559 {
560  PyObject *m;
561 
562  if (PyType_Ready(&JitCpuType) < 0)
563  return;
564 
565  m = Py_InitModule("JitCore_msp430", JitCore_msp430_Methods);
566  if (m == NULL)
567  return;
568 
569  JitCore_msp430_Error = PyErr_NewException("JitCore_msp430.error", NULL, NULL);
570  Py_INCREF(JitCore_msp430_Error);
571  PyModule_AddObject(m, "error", JitCore_msp430_Error);
572 
573  Py_INCREF(&JitCpuType);
574  PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
575 
576 }
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.

278 {
279  self->cpu = malloc(sizeof(vm_cpu_t));
280  if (self->cpu == NULL) {
281  fprintf(stderr, "cannot alloc vm_cpu_t\n");
282  exit(0);
283  }
284  return 0;
285 }
void * cpu
Definition: JitCore.h:97
void MEM_WRITE_08 ( JitCpu jitcpu,
uint64_t  addr,
uint8_t  src 
)

Definition at line 196 of file JitCore_msp430.c.

197 {
198  vm_MEM_WRITE_08(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
199  check_automod(jitcpu, addr, 8);
200 }
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void vm_MEM_WRITE_08(vm_mngr_t *vm_mngr, uint64_t addr, unsigned char src)
Definition: vm_mngr.c:438

+ Here is the call graph for this function:

void MEM_WRITE_16 ( JitCpu jitcpu,
uint64_t  addr,
uint16_t  src 
)

Definition at line 202 of file JitCore_msp430.c.

203 {
204  vm_MEM_WRITE_16(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
205  check_automod(jitcpu, addr, 16);
206 }
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)
Definition: vm_mngr.c:444
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the call graph for this function:

void MEM_WRITE_32 ( JitCpu jitcpu,
uint64_t  addr,
uint32_t  src 
)

Definition at line 208 of file JitCore_msp430.c.

209 {
210  vm_MEM_WRITE_32(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
211  check_automod(jitcpu, addr, 32);
212 }
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void vm_MEM_WRITE_32(vm_mngr_t *vm_mngr, uint64_t addr, unsigned int src)
Definition: vm_mngr.c:449

+ Here is the call graph for this function:

void MEM_WRITE_64 ( JitCpu jitcpu,
uint64_t  addr,
uint64_t  src 
)

Definition at line 214 of file JitCore_msp430.c.

215 {
216  vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
217  check_automod(jitcpu, addr, 64);
218 }
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)
Definition: vm_mngr.c:454
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the call graph for this function:

PyObject* vm_set_mem ( JitCpu self,
PyObject *  args 
)

Definition at line 221 of file JitCore_msp430.c.

222 {
223  PyObject *py_addr;
224  PyObject *py_buffer;
225  Py_ssize_t py_length;
226 
227  char * buffer;
228  uint64_t size;
229  uint64_t addr;
230  int ret = 0x1337;
231 
232  if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_buffer))
233  return NULL;
234 
235  PyGetInt(py_addr, addr);
236 
237  if(!PyString_Check(py_buffer))
238  RAISE(PyExc_TypeError,"arg must be str");
239 
240  size = PyString_Size(py_buffer);
241  PyString_AsStringAndSize(py_buffer, &buffer, &py_length);
242 
243  ret = vm_write_mem(&(((VmMngr*)self->pyvm)->vm_mngr), addr, buffer, size);
244  if (ret < 0)
245  RAISE(PyExc_TypeError,"arg must be str");
246  check_automod(self, addr, size*8);
247 
248  Py_INCREF(Py_None);
249  return Py_None;
250 }
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
#define RAISE(errtype, msg)
Definition: JitCore.h:4
#define PyGetInt(item, value)
Definition: JitCore.h:8
int vm_write_mem(vm_mngr_t *vm_mngr, uint64_t addr, char *buffer, uint64_t size)
Definition: vm_mngr.c:518
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95

+ Here is the call graph for this function:

Variable Documentation

reg_dict gpreg_dict[]
Initial value:
= { {.name = "PC", .offset = offsetof(vm_cpu_t, PC)},
{.name = "SP", .offset = offsetof(vm_cpu_t, SP)},
{.name = "R3", .offset = offsetof(vm_cpu_t, R3)},
{.name = "R4", .offset = offsetof(vm_cpu_t, R4)},
{.name = "R5", .offset = offsetof(vm_cpu_t, R5)},
{.name = "R6", .offset = offsetof(vm_cpu_t, R6)},
{.name = "R7", .offset = offsetof(vm_cpu_t, R7)},
{.name = "R8", .offset = offsetof(vm_cpu_t, R8)},
{.name = "R9", .offset = offsetof(vm_cpu_t, R9)},
{.name = "R10", .offset = offsetof(vm_cpu_t, R10)},
{.name = "R11", .offset = offsetof(vm_cpu_t, R11)},
{.name = "R12", .offset = offsetof(vm_cpu_t, R12)},
{.name = "R13", .offset = offsetof(vm_cpu_t, R13)},
{.name = "R14", .offset = offsetof(vm_cpu_t, R14)},
{.name = "R15", .offset = offsetof(vm_cpu_t, R15)},
{.name = "zf", .offset = offsetof(vm_cpu_t, zf)},
{.name = "nf", .offset = offsetof(vm_cpu_t, nf)},
{.name = "of", .offset = offsetof(vm_cpu_t, of)},
{.name = "cf", .offset = offsetof(vm_cpu_t, cf)},
{.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

Definition at line 555 of file JitCore_msp430.c.

PyMethodDef JitCore_msp430_Methods[]
static
Initial value:
= {
{"get_gpreg_offset_all", (PyCFunction)get_gpreg_offset_all, METH_NOARGS},
{NULL, NULL, 0, NULL}
}
PyObject * get_gpreg_offset_all(void)

Definition at line 545 of file JitCore_msp430.c.

PyGetSetDef JitCpu_getseters[]
static

Definition at line 458 of file JitCore_msp430.c.

PyMemberDef JitCpu_members[]
static
Initial value:
= {
{NULL}
}

Definition at line 252 of file JitCore_msp430.c.

PyMethodDef JitCpu_methods[]
static
Initial value:
= {
{"init_regs", (PyCFunction)cpu_init_regs, METH_NOARGS,
"X"},
{"dump_gpregs", (PyCFunction)cpu_dump_gpregs, METH_NOARGS,
"X"},
{"get_gpreg", (PyCFunction)cpu_get_gpreg, METH_NOARGS,
"X"},
{"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}
}
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.

PyTypeObject JitCpuType
static

Definition at line 501 of file JitCore_msp430.c.