#include <Python.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdint.h>
#include <inttypes.h>
#include <math.h>
#include "queue.h"
#include "vm_mngr.h"
Go to the source code of this file.
Macros | |
#define | MIN(a, b) (((a)<(b))?(a):(b)) |
#define | MAX(a, b) (((a)>(b))?(a):(b)) |
Functions | |
uint16_t | set_endian16 (vm_mngr_t *vm_mngr, uint16_t val) |
uint32_t | set_endian32 (vm_mngr_t *vm_mngr, uint32_t val) |
uint64_t | set_endian64 (vm_mngr_t *vm_mngr, uint64_t val) |
void | print_val (uint64_t base, uint64_t addr) |
int | is_mem_mapped (vm_mngr_t *vm_mngr, uint64_t ad) |
uint64_t | get_mem_base_addr (vm_mngr_t *vm_mngr, uint64_t ad, uint64_t *addr_base) |
struct memory_page_node * | get_memory_page_from_address (vm_mngr_t *vm_mngr, uint64_t ad) |
static uint64_t | memory_page_read (vm_mngr_t *vm_mngr, unsigned int my_size, uint64_t ad) |
static void | memory_page_write (vm_mngr_t *vm_mngr, unsigned int my_size, uint64_t ad, uint64_t src) |
uint16_t | bcdadd_16 (uint16_t a, uint16_t b) |
uint16_t | bcdadd_cf_16 (uint16_t a, uint16_t b) |
void | dump_code_bloc (vm_mngr_t *vm_mngr) |
void | check_write_code_bloc (vm_mngr_t *vm_mngr, uint64_t my_size, uint64_t addr) |
PyObject * | addr2BlocObj (vm_mngr_t *vm_mngr, uint64_t addr) |
void | vm_MEM_WRITE_08 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned char src) |
void | vm_MEM_WRITE_16 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned short src) |
void | vm_MEM_WRITE_32 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned int src) |
void | vm_MEM_WRITE_64 (vm_mngr_t *vm_mngr, uint64_t addr, uint64_t src) |
unsigned char | vm_MEM_LOOKUP_08 (vm_mngr_t *vm_mngr, uint64_t addr) |
unsigned short | vm_MEM_LOOKUP_16 (vm_mngr_t *vm_mngr, uint64_t addr) |
unsigned int | vm_MEM_LOOKUP_32 (vm_mngr_t *vm_mngr, uint64_t addr) |
uint64_t | vm_MEM_LOOKUP_64 (vm_mngr_t *vm_mngr, uint64_t addr) |
int | vm_read_mem (vm_mngr_t *vm_mngr, uint64_t addr, char **buffer_ptr, uint64_t size) |
int | vm_write_mem (vm_mngr_t *vm_mngr, uint64_t addr, char *buffer, uint64_t size) |
unsigned int | parity (unsigned int a) |
int | shift_right_arith (unsigned int size, int a, unsigned int b) |
uint64_t | shift_right_logic (uint64_t size, uint64_t a, uint64_t b) |
uint64_t | shift_left_logic (uint64_t size, uint64_t a, uint64_t b) |
unsigned int | mul_lo_op (unsigned int size, unsigned int a, unsigned int b) |
unsigned int | mul_hi_op (unsigned int size, unsigned int a, unsigned int b) |
unsigned int | imul_lo_op_08 (char a, char b) |
unsigned int | imul_lo_op_16 (short a, short b) |
unsigned int | imul_lo_op_32 (int a, int b) |
int | imul_hi_op_08 (char a, char b) |
int | imul_hi_op_16 (short a, short b) |
int | imul_hi_op_32 (int a, int b) |
unsigned int | umul16_lo (unsigned short a, unsigned short b) |
unsigned int | umul16_hi (unsigned short a, unsigned short b) |
unsigned int | div_op (unsigned int size, unsigned int a, unsigned int b, unsigned int c) |
unsigned int | rem_op (unsigned int size, unsigned int a, unsigned int b, unsigned int c) |
uint64_t | rot_left (uint64_t size, uint64_t a, uint64_t b) |
uint64_t | rot_right (uint64_t size, uint64_t a, uint64_t b) |
int | rcl_rez_op (unsigned int size, unsigned int a, unsigned int b, unsigned int cf) |
int | rcr_rez_op (unsigned int size, unsigned int a, unsigned int b, unsigned int cf) |
int | rcl_cf_op (unsigned int size, unsigned int a, unsigned int b, unsigned int cf) |
int | rcr_cf_op (unsigned int size, unsigned int a, unsigned int b, unsigned int cf) |
unsigned int | x86_bsr (uint64_t src, unsigned int size) |
unsigned int | x86_bsf (uint64_t src, unsigned int size) |
unsigned int | my_imul08 (unsigned int a, unsigned int b) |
unsigned int | cpuid (unsigned int a, unsigned int reg_num) |
void | dump_float (void) |
double | mem_32_to_double (unsigned int m) |
double | mem_64_to_double (uint64_t m) |
double | int_16_to_double (unsigned int m) |
double | int_32_to_double (unsigned int m) |
double | int_64_to_double (uint64_t m) |
int32_t | double_to_int_32 (double d) |
int64_t | double_to_int_64 (double d) |
double | fadd (double a, double b) |
double | fsub (double a, double b) |
double | fmul (double a, double b) |
double | fdiv (double a, double b) |
double | ftan (double a) |
double | frndint (double a) |
double | fsin (double a) |
double | fcos (double a) |
double | fscale (double a, double b) |
double | f2xm1 (double a) |
double | fsqrt (double a) |
double | fabs (double a) |
unsigned int | fcom_c0 (double a, double b) |
unsigned int | fcom_c1 (double a, double b) |
unsigned int | fcom_c2 (double a, double b) |
unsigned int | fcom_c3 (double a, double b) |
unsigned int | double_to_mem_32 (double d) |
uint64_t | double_to_mem_64 (double d) |
struct memory_page_node * | create_memory_page_node (uint64_t ad, unsigned int size, unsigned int access) |
struct code_bloc_node * | create_code_bloc_node (uint64_t ad_start, uint64_t ad_stop) |
void | add_code_bloc (vm_mngr_t *vm_mngr, struct code_bloc_node *cbp) |
void | dump_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | init_memory_page_pool (vm_mngr_t *vm_mngr) |
void | init_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | init_memory_breakpoint (vm_mngr_t *vm_mngr) |
void | reset_memory_page_pool (vm_mngr_t *vm_mngr) |
void | reset_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | reset_memory_breakpoint (vm_mngr_t *vm_mngr) |
int | is_mpn_in_tab (vm_mngr_t *vm_mngr, struct memory_page_node *mpn_a) |
void | insert_mpn_in_tab (struct memory_page_node *mpn_a) |
void | add_memory_page (vm_mngr_t *vm_mngr, struct memory_page_node *mpn_a) |
char * | dump (vm_mngr_t *vm_mngr) |
void | dump_memory_breakpoint_pool (vm_mngr_t *vm_mngr) |
void | add_memory_breakpoint (vm_mngr_t *vm_mngr, uint64_t ad, uint64_t size, unsigned int access) |
void | remove_memory_breakpoint (vm_mngr_t *vm_mngr, uint64_t ad, unsigned int access) |
unsigned int | get_memory_page_next (vm_mngr_t *vm_mngr, unsigned int n_ad) |
void | hexdump (char *m, unsigned int l) |
unsigned int | access_segment (unsigned int d) |
unsigned int | access_segment_ok (unsigned int d) |
unsigned int | load_segment_limit (unsigned int d) |
unsigned int | load_segment_limit_ok (unsigned int d) |
unsigned int | load_tr_segment_selector (unsigned int d) |
uint64_t | get_exception_flag (vm_mngr_t *vm_mngr) |
unsigned int access_segment | ( | unsigned int | d | ) |
unsigned int access_segment_ok | ( | unsigned int | d | ) |
void add_code_bloc | ( | vm_mngr_t * | vm_mngr, |
struct code_bloc_node * | cbp | ||
) |
void add_memory_breakpoint | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad, | ||
uint64_t | size, | ||
unsigned int | access | ||
) |
Definition at line 1543 of file vm_mngr.c.
void add_memory_page | ( | vm_mngr_t * | vm_mngr, |
struct memory_page_node * | mpn_a | ||
) |
Definition at line 1467 of file vm_mngr.c.
PyObject* addr2BlocObj | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
uint16_t bcdadd_16 | ( | uint16_t | a, |
uint16_t | b | ||
) |
uint16_t bcdadd_cf_16 | ( | uint16_t | a, |
uint16_t | b | ||
) |
void check_write_code_bloc | ( | vm_mngr_t * | vm_mngr, |
uint64_t | my_size, | ||
uint64_t | addr | ||
) |
Definition at line 391 of file vm_mngr.c.
unsigned int cpuid | ( | unsigned int | a, |
unsigned int | reg_num | ||
) |
struct code_bloc_node* create_code_bloc_node | ( | uint64_t | ad_start, |
uint64_t | ad_stop | ||
) |
Definition at line 1320 of file vm_mngr.c.
struct memory_page_node* create_memory_page_node | ( | uint64_t | ad, |
unsigned int | size, | ||
unsigned int | access | ||
) |
Definition at line 1295 of file vm_mngr.c.
unsigned int div_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | c | ||
) |
int32_t double_to_int_32 | ( | double | d | ) |
int64_t double_to_int_64 | ( | double | d | ) |
unsigned int double_to_mem_32 | ( | double | d | ) |
uint64_t double_to_mem_64 | ( | double | d | ) |
char* dump | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1493 of file vm_mngr.c.
void dump_code_bloc | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 382 of file vm_mngr.c.
void dump_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1346 of file vm_mngr.c.
void dump_float | ( | void | ) |
void dump_memory_breakpoint_pool | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1529 of file vm_mngr.c.
double f2xm1 | ( | double | a | ) |
double fabs | ( | double | a | ) |
double fadd | ( | double | a, |
double | b | ||
) |
unsigned int fcom_c1 | ( | double | a, |
double | b | ||
) |
unsigned int fcom_c2 | ( | double | a, |
double | b | ||
) |
double fcos | ( | double | a | ) |
double fdiv | ( | double | a, |
double | b | ||
) |
double fmul | ( | double | a, |
double | b | ||
) |
double frndint | ( | double | a | ) |
double fscale | ( | double | a, |
double | b | ||
) |
double fsin | ( | double | a | ) |
double fsqrt | ( | double | a | ) |
double fsub | ( | double | a, |
double | b | ||
) |
double ftan | ( | double | a | ) |
uint64_t get_mem_base_addr | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad, | ||
uint64_t * | addr_base | ||
) |
Definition at line 107 of file vm_mngr.c.
struct memory_page_node* get_memory_page_from_address | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad | ||
) |
Definition at line 126 of file vm_mngr.c.
unsigned int get_memory_page_next | ( | vm_mngr_t * | vm_mngr, |
unsigned int | n_ad | ||
) |
Definition at line 1576 of file vm_mngr.c.
void hexdump | ( | char * | m, |
unsigned int | l | ||
) |
int imul_hi_op_08 | ( | char | a, |
char | b | ||
) |
int imul_hi_op_16 | ( | short | a, |
short | b | ||
) |
int imul_hi_op_32 | ( | int | a, |
int | b | ||
) |
unsigned int imul_lo_op_08 | ( | char | a, |
char | b | ||
) |
unsigned int imul_lo_op_16 | ( | short | a, |
short | b | ||
) |
unsigned int imul_lo_op_32 | ( | int | a, |
int | b | ||
) |
void init_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
void init_memory_breakpoint | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1373 of file vm_mngr.c.
void init_memory_page_pool | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1358 of file vm_mngr.c.
void insert_mpn_in_tab | ( | struct memory_page_node * | mpn_a | ) |
double int_16_to_double | ( | unsigned int | m | ) |
double int_32_to_double | ( | unsigned int | m | ) |
double int_64_to_double | ( | uint64_t | m | ) |
int is_mem_mapped | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad | ||
) |
Definition at line 87 of file vm_mngr.c.
int is_mpn_in_tab | ( | vm_mngr_t * | vm_mngr, |
struct memory_page_node * | mpn_a | ||
) |
Definition at line 1424 of file vm_mngr.c.
unsigned int load_segment_limit | ( | unsigned int | d | ) |
unsigned int load_segment_limit_ok | ( | unsigned int | d | ) |
unsigned int load_tr_segment_selector | ( | unsigned int | d | ) |
double mem_32_to_double | ( | unsigned int | m | ) |
double mem_64_to_double | ( | uint64_t | m | ) |
|
static |
Definition at line 158 of file vm_mngr.c.
|
static |
Definition at line 246 of file vm_mngr.c.
unsigned int mul_hi_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b | ||
) |
unsigned int mul_lo_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b | ||
) |
unsigned int parity | ( | unsigned int | a | ) |
int rcl_cf_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | cf | ||
) |
int rcl_rez_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | cf | ||
) |
int rcr_cf_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | cf | ||
) |
Definition at line 922 of file vm_mngr.c.
int rcr_rez_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | cf | ||
) |
Definition at line 890 of file vm_mngr.c.
unsigned int rem_op | ( | unsigned int | size, |
unsigned int | a, | ||
unsigned int | b, | ||
unsigned int | c | ||
) |
void remove_memory_breakpoint | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad, | ||
unsigned int | access | ||
) |
Definition at line 1559 of file vm_mngr.c.
void reset_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1396 of file vm_mngr.c.
void reset_memory_breakpoint | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1411 of file vm_mngr.c.
void reset_memory_page_pool | ( | vm_mngr_t * | vm_mngr | ) |
Definition at line 1379 of file vm_mngr.c.
uint64_t rot_left | ( | uint64_t | size, |
uint64_t | a, | ||
uint64_t | b | ||
) |
uint64_t rot_right | ( | uint64_t | size, |
uint64_t | a, | ||
uint64_t | b | ||
) |
uint16_t set_endian16 | ( | vm_mngr_t * | vm_mngr, |
uint16_t | val | ||
) |
uint32_t set_endian32 | ( | vm_mngr_t * | vm_mngr, |
uint32_t | val | ||
) |
uint64_t set_endian64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | val | ||
) |
uint64_t shift_left_logic | ( | uint64_t | size, |
uint64_t | a, | ||
uint64_t | b | ||
) |
int shift_right_arith | ( | unsigned int | size, |
int | a, | ||
unsigned int | b | ||
) |
uint64_t shift_right_logic | ( | uint64_t | size, |
uint64_t | a, | ||
uint64_t | b | ||
) |
unsigned int umul16_hi | ( | unsigned short | a, |
unsigned short | b | ||
) |
unsigned int umul16_lo | ( | unsigned short | a, |
unsigned short | b | ||
) |
unsigned char vm_MEM_LOOKUP_08 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
Definition at line 460 of file vm_mngr.c.
unsigned short vm_MEM_LOOKUP_16 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
Definition at line 466 of file vm_mngr.c.
unsigned int vm_MEM_LOOKUP_32 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
Definition at line 472 of file vm_mngr.c.
uint64_t vm_MEM_LOOKUP_64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
Definition at line 478 of file vm_mngr.c.
void vm_MEM_WRITE_08 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned char | src | ||
) |
Definition at line 438 of file vm_mngr.c.
void vm_MEM_WRITE_16 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned short | src | ||
) |
Definition at line 444 of file vm_mngr.c.
void vm_MEM_WRITE_32 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned int | src | ||
) |
Definition at line 449 of file vm_mngr.c.
void vm_MEM_WRITE_64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
uint64_t | src | ||
) |
Definition at line 454 of file vm_mngr.c.
int vm_read_mem | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
char ** | buffer_ptr, | ||
uint64_t | size | ||
) |
Definition at line 486 of file vm_mngr.c.
int vm_write_mem | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
char * | buffer, | ||
uint64_t | size | ||
) |
Definition at line 518 of file vm_mngr.c.