Merge pull request #4852 from FernetMenta/aefixes
[vuplus_xbmc] / lib / UnrarXLib / rarvmtbl.cpp
1 #define VMCF_OP0             0
2 #define VMCF_OP1             1
3 #define VMCF_OP2             2
4 #define VMCF_OPMASK          3
5 #define VMCF_BYTEMODE        4
6 #define VMCF_JUMP            8
7 #define VMCF_PROC           16
8 #define VMCF_USEFLAGS       32
9 #define VMCF_CHFLAGS        64
10
11 static byte VM_CmdFlags[]=
12 {
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
53 };