-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathvm.h
114 lines (74 loc) · 1.81 KB
/
vm.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#define DEBUG //printf
typedef struct v_register
{
long long v_rax;
long long v_rbx;
long long v_rcx;
long long v_rdx;
long long v_rsi;
long long v_rdi;
long long v_rbp;
long long v_rsp;
long long v_rip;
long long v_r8;
long long v_r9;
long long v_r10;
long long v_r11;
long long v_r12;
long long v_r13;
long long v_r14;
long long v_r15;
long long v_rsv;
long long v_eflags;
} v_register;
typedef struct v_info
{
int TYPE;
int SIGN;
bool REF;
int SIZE;
long long operand;
} v_info;
v_info *parse(v_register *v_reg, int size);
void v_nop(v_register *v_reg);
void v_push(v_register *v_reg);
void v_pop(v_register *v_reg);
void v_mov(v_register *v_reg);
void v_movsx(v_register *v_reg);
void v_movsxd(v_register *v_reg);
void v_movzx(v_register *v_reg);
void v_cdqe(v_register *v_reg);
void v_lea(v_register *v_reg);
void v_add(v_register *v_reg);
void v_sub(v_register *v_reg);
void v_xor(v_register *v_reg);
void v_jmp(v_register *v_reg);
void v_je(v_register *v_reg);
void v_jne(v_register *v_reg);
void v_jg(v_register *v_reg);
void v_jge(v_register *v_reg);
void v_ja(v_register *v_reg);
void v_jae(v_register *v_reg);
void v_jl(v_register *v_reg);
void v_jle(v_register *v_reg);
void v_jb(v_register *v_reg);
void v_jbe(v_register *v_reg);
void v_jo(v_register *v_reg);
void v_jno(v_register *v_reg);
void v_jz(v_register *v_reg);
void v_jnz(v_register *v_reg);
void v_js(v_register *v_reg);
void v_jns(v_register *v_reg);
void v_shl(v_register *v_reg);
void v_shr(v_register *v_reg);
void v_cmp(v_register *v_reg);
void v_test(v_register *v_reg);
void v_call(v_register *v_reg);
void v_div(v_register *v_reg);
void v_imul(v_register *v_reg);