5 #define VMCF_BYTEMODE 4
8 #define VMCF_USEFLAGS 32
9 #define VMCF_CHFLAGS 64
11 static byte VM_CmdFlags[]=
13 /* VM_MOV */ VMCF_OP2 | VMCF_BYTEMODE ,
14 /* VM_CMP */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
15 /* VM_ADD */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
16 /* VM_SUB */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
17 /* VM_JZ */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
18 /* VM_JNZ */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
19 /* VM_INC */ VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
20 /* VM_DEC */ VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
21 /* VM_JMP */ VMCF_OP1 | VMCF_JUMP ,
22 /* VM_XOR */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
23 /* VM_AND */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
24 /* VM_OR */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
25 /* VM_TEST */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
26 /* VM_JS */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
27 /* VM_JNS */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
28 /* VM_JB */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
29 /* VM_JBE */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
30 /* VM_JA */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
31 /* VM_JAE */ VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS ,
32 /* VM_PUSH */ VMCF_OP1 ,
33 /* VM_POP */ VMCF_OP1 ,
34 /* VM_CALL */ VMCF_OP1 | VMCF_PROC ,
35 /* VM_RET */ VMCF_OP0 | VMCF_PROC ,
36 /* VM_NOT */ VMCF_OP1 | VMCF_BYTEMODE ,
37 /* VM_SHL */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
38 /* VM_SHR */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
39 /* VM_SAR */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
40 /* VM_NEG */ VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS ,
41 /* VM_PUSHA */ VMCF_OP0 ,
42 /* VM_POPA */ VMCF_OP0 ,
43 /* VM_PUSHF */ VMCF_OP0 | VMCF_USEFLAGS ,
44 /* VM_POPF */ VMCF_OP0 | VMCF_CHFLAGS ,
45 /* VM_MOVZX */ VMCF_OP2 ,
46 /* VM_MOVSX */ VMCF_OP2 ,
47 /* VM_XCHG */ VMCF_OP2 | VMCF_BYTEMODE ,
48 /* VM_MUL */ VMCF_OP2 | VMCF_BYTEMODE ,
49 /* VM_DIV */ VMCF_OP2 | VMCF_BYTEMODE ,
50 /* VM_ADC */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_USEFLAGS | VMCF_CHFLAGS ,
51 /* VM_SBB */ VMCF_OP2 | VMCF_BYTEMODE | VMCF_USEFLAGS | VMCF_CHFLAGS ,
52 /* VM_PRINT */ VMCF_OP0