Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Classes | Macros | Typedefs | Functions
JitCore.h File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  block_id
 
struct  JitCpu
 
struct  _reg_dict
 

Macros

#define RAISE(errtype, msg)   {PyObject* p; p = PyErr_Format( errtype, msg ); return p;}
 
#define RAISE_ret0(errtype, msg)   {PyObject* p; p = PyErr_Format( errtype, msg ); return 0;}
 
#define PyGetInt(item, value)
 
#define PyGetInt_ret0(item, value)
 
#define getset_reg_u64(regname)
 
#define getset_reg_u32(regname)
 
#define getset_reg_u16(regname)
 
#define get_reg(reg)
 
#define get_reg_off(reg)
 
#define VM_exception_flag   (((VmMngr*)jitcpu->pyvm)->vm_mngr.exception_flags)
 
#define CPU_exception_flag   (((vm_cpu_t*)jitcpu->cpu)->exception_flags)
 
#define JIT_RET_EXCEPTION   1
 
#define JIT_RET_NO_EXCEPTION   0
 

Typedefs

typedef struct _reg_dict reg_dict
 

Functions

void JitCpu_dealloc (JitCpu *self)
 
PyObject * JitCpu_new (PyTypeObject *type, PyObject *args, PyObject *kwds)
 
PyObject * JitCpu_get_vmmngr (JitCpu *self, void *closure)
 
PyObject * JitCpu_set_vmmngr (JitCpu *self, PyObject *value, void *closure)
 
PyObject * JitCpu_get_jitter (JitCpu *self, void *closure)
 
PyObject * JitCpu_set_jitter (JitCpu *self, PyObject *value, void *closure)
 
void Resolve_dst (block_id *BlockDst, uint64_t addr, uint64_t is_local)
 
uint8_t MEM_LOOKUP_08 (JitCpu *jitcpu, uint64_t addr)
 
uint16_t MEM_LOOKUP_16 (JitCpu *jitcpu, uint64_t addr)
 
uint32_t MEM_LOOKUP_32 (JitCpu *jitcpu, uint64_t addr)
 
uint64_t MEM_LOOKUP_64 (JitCpu *jitcpu, uint64_t addr)
 
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_get_mem (JitCpu *self, PyObject *args)
 

Macro Definition Documentation

#define CPU_exception_flag   (((vm_cpu_t*)jitcpu->cpu)->exception_flags)

Definition at line 132 of file JitCore.h.

#define get_reg (   reg)
Value:
do { \
o = PyLong_FromUnsignedLongLong((uint64_t)((vm_cpu_t*)(self->cpu))->reg); \
PyDict_SetItemString(dict, #reg, o); \
Py_DECREF(o); \
} while(0);

Definition at line 74 of file JitCore.h.

#define get_reg_off (   reg)
Value:
do { \
o = PyLong_FromUnsignedLongLong((uint64_t)offsetof(vm_cpu_t, reg)); \
PyDict_SetItemString(dict, #reg, o); \
Py_DECREF(o); \
} while(0);

Definition at line 81 of file JitCore.h.

#define getset_reg_u16 (   regname)
Value:
static PyObject *JitCpu_get_ ## regname (JitCpu *self, void *closure) \
{ \
return PyLong_FromUnsignedLongLong((uint16_t)(((vm_cpu_t*)(self->cpu))-> regname )); \
} \
static int JitCpu_set_ ## regname (JitCpu *self, PyObject *value, void *closure) \
{ \
uint16_t val; \
PyGetInt_ret0(value, val); \
((vm_cpu_t*)(self->cpu))-> regname = val; \
return 0; \
}
#define PyGetInt_ret0(item, value)
Definition: JitCore.h:20
Definition: JitCore.h:93

Definition at line 60 of file JitCore.h.

#define getset_reg_u32 (   regname)
Value:
static PyObject *JitCpu_get_ ## regname (JitCpu *self, void *closure) \
{ \
return PyLong_FromUnsignedLongLong((uint32_t)(((vm_cpu_t*)(self->cpu))-> regname )); \
} \
static int JitCpu_set_ ## regname (JitCpu *self, PyObject *value, void *closure) \
{ \
uint32_t val; \
PyGetInt_ret0(value, val); \
((vm_cpu_t*)(self->cpu))-> regname = val; \
return 0; \
}
#define PyGetInt_ret0(item, value)
Definition: JitCore.h:20
Definition: JitCore.h:93

Definition at line 46 of file JitCore.h.

#define getset_reg_u64 (   regname)
Value:
static PyObject *JitCpu_get_ ## regname (JitCpu *self, void *closure) \
{ \
return PyLong_FromUnsignedLongLong((uint64_t)(((vm_cpu_t*)(self->cpu))-> regname )); \
} \
static int JitCpu_set_ ## regname (JitCpu *self, PyObject *value, void *closure) \
{ \
uint64_t val; \
PyGetInt_ret0(value, val); \
((vm_cpu_t*)(self->cpu))-> regname = val; \
return 0; \
}
#define PyGetInt_ret0(item, value)
Definition: JitCore.h:20
Definition: JitCore.h:93

Definition at line 33 of file JitCore.h.

#define JIT_RET_EXCEPTION   1

Definition at line 134 of file JitCore.h.

#define JIT_RET_NO_EXCEPTION   0

Definition at line 135 of file JitCore.h.

#define PyGetInt (   item,
  value 
)
Value:
if (PyInt_Check(item)){ \
value = (uint64_t)PyInt_AsLong(item); \
} \
else if (PyLong_Check(item)){ \
value = (uint64_t)PyLong_AsUnsignedLongLong(item); \
} \
else{ \
RAISE(PyExc_TypeError,"arg must be int"); \
} \
#define RAISE(errtype, msg)
Definition: JitCore.h:4

Definition at line 8 of file JitCore.h.

#define PyGetInt_ret0 (   item,
  value 
)
Value:
if (PyInt_Check(item)){ \
value = (uint64_t)PyInt_AsLong(item); \
} \
else if (PyLong_Check(item)){ \
value = (uint64_t)PyLong_AsUnsignedLongLong(item); \
} \
else{ \
printf("error\n"); return 0; \
} \

Definition at line 20 of file JitCore.h.

#define RAISE (   errtype,
  msg 
)    {PyObject* p; p = PyErr_Format( errtype, msg ); return p;}

Definition at line 4 of file JitCore.h.

#define RAISE_ret0 (   errtype,
  msg 
)    {PyObject* p; p = PyErr_Format( errtype, msg ); return 0;}

Definition at line 5 of file JitCore.h.

#define VM_exception_flag   (((VmMngr*)jitcpu->pyvm)->vm_mngr.exception_flags)

Definition at line 131 of file JitCore.h.

Typedef Documentation

typedef struct _reg_dict reg_dict

Function Documentation

void JitCpu_dealloc ( JitCpu self)

Definition at line 11 of file JitCore.c.

12 {
13  self->ob_type->tp_free((PyObject*)self);
14 }
PyObject* JitCpu_get_jitter ( JitCpu self,
void *  closure 
)

Definition at line 41 of file JitCore.c.

42 {
43  if (self->jitter) {
44  Py_INCREF(self->jitter);
45  return self->jitter;
46  }
47  Py_INCREF(Py_None);
48  return Py_None;
49 }
PyObject * jitter
Definition: JitCore.h:96
PyObject* JitCpu_get_vmmngr ( JitCpu self,
void *  closure 
)

Definition at line 25 of file JitCore.c.

26 {
27  if (self->pyvm) {
28  Py_INCREF(self->pyvm);
29  return self->pyvm;
30  }
31  Py_INCREF(Py_None);
32  return Py_None;
33 }
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
PyObject* JitCpu_new ( PyTypeObject *  type,
PyObject *  args,
PyObject *  kwds 
)

Definition at line 17 of file JitCore.c.

18 {
19  JitCpu *self;
20 
21  self = (JitCpu *)type->tp_alloc(type, 0);
22  return (PyObject *)self;
23 }
Definition: JitCore.h:93
PyObject* JitCpu_set_jitter ( JitCpu self,
PyObject *  value,
void *  closure 
)

Definition at line 51 of file JitCore.c.

52 {
53  self->jitter = value;
54  return 0;
55 }
PyObject* JitCpu_set_vmmngr ( JitCpu self,
PyObject *  value,
void *  closure 
)

Definition at line 35 of file JitCore.c.

36 {
37  self->pyvm = value;
38  return 0;
39 }
uint8_t MEM_LOOKUP_08 ( JitCpu jitcpu,
uint64_t  addr 
)
uint16_t MEM_LOOKUP_16 ( JitCpu jitcpu,
uint64_t  addr 
)
uint32_t MEM_LOOKUP_32 ( JitCpu jitcpu,
uint64_t  addr 
)
uint64_t MEM_LOOKUP_64 ( JitCpu jitcpu,
uint64_t  addr 
)
void MEM_WRITE_08 ( JitCpu jitcpu,
uint64_t  addr,
uint8_t  src 
)

Definition at line 226 of file JitCore_aarch64.c.

227 {
228  vm_MEM_WRITE_08(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
229  check_automod(jitcpu, addr, 8);
230 }
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
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)

+ Here is the call graph for this function:

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

Definition at line 232 of file JitCore_aarch64.c.

233 {
234  vm_MEM_WRITE_16(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
235  check_automod(jitcpu, addr, 16);
236 }
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
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)

+ Here is the call graph for this function:

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

Definition at line 238 of file JitCore_aarch64.c.

239 {
240  vm_MEM_WRITE_32(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
241  check_automod(jitcpu, addr, 32);
242 }
PyObject_HEAD PyObject * pyvm
Definition: JitCore.h:95
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)
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 244 of file JitCore_aarch64.c.

245 {
246  vm_MEM_WRITE_64(&((VmMngr*)jitcpu->pyvm)->vm_mngr, addr, src);
247  check_automod(jitcpu, addr, 64);
248 }
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
void check_automod(JitCpu *jitcpu, uint64_t addr, uint64_t size)

+ Here is the call graph for this function:

void Resolve_dst ( block_id BlockDst,
uint64_t  addr,
uint64_t  is_local 
)

Definition at line 58 of file JitCore.c.

59 {
60  b->address = addr;
61  b->is_local = is_local;
62 }
PyObject* vm_get_mem ( JitCpu self,
PyObject *  args 
)