home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 275 / DPCS0111DVD.ISO / Toolkit / Audio-Visual / VirtualDub / Source / VirtualDub-1.9.10-src.7z / src / disasm / h / ruleset.h next >
Encoding:
C/C++ Source or Header  |  2009-09-14  |  2.5 KB  |  99 lines

  1. #ifndef f_VD2_DISASM_RULESET_H
  2. #define f_VD2_DISASM_RULESET_H
  3.  
  4. #include <vector>
  5. #include <string>
  6. #include <list>
  7.  
  8. #include <vd2/system/vdtypes.h>
  9.  
  10. struct rule {
  11.     std::vector<std::pair<uint8, uint8> > match_stream;
  12.     std::string result;
  13.     std::string    rule_line;
  14.     int argcount;
  15.     bool is_return : 1;
  16.     bool is_call : 1;
  17.     bool is_jump : 1;
  18.     bool is_jcc : 1;
  19.     bool is_invalid : 1;
  20.     bool is_66 : 1;
  21.     bool is_67 : 1;
  22.     bool is_f2 : 1;
  23.     bool is_f3 : 1;
  24.     bool is_imm8 : 1;
  25.     bool is_imm16 : 1;
  26.     bool is_imm32 : 1;
  27.  
  28.     rule()
  29.         : argcount(0)
  30.         , is_return(false)
  31.         , is_call(false)
  32.         , is_jump(false)
  33.         , is_jcc(false)
  34.         , is_invalid(false)
  35.         , is_66(false)
  36.         , is_67(false)
  37.         , is_f2(false)
  38.         , is_f3(false)
  39.         , is_imm8(false)
  40.         , is_imm16(false)
  41.         , is_imm32(false)
  42.     {
  43.     }
  44. };
  45.  
  46. struct ruleset {
  47.     std::list<rule>        rules;
  48.     std::string            name;
  49. };
  50.  
  51. typedef std::list<ruleset>                tRuleSystem;
  52.  
  53. // 1-15 are static lookups
  54. static const char kTarget_r32        = 1;
  55. static const char kTarget_r16        = 2;
  56. static const char kTarget_r8        = 3;
  57. static const char kTarget_rm        = 4;
  58. static const char kTarget_rx        = 5;
  59. static const char kTarget_rc        = 6;
  60. static const char kTarget_rd        = 7;
  61. static const char kTarget_rs        = 8;
  62. static const char kTarget_rf        = 9;
  63.  
  64. // 16-31 are dynamic translations
  65. static const char kTarget_r1632        = 16;
  66. static const char kTarget_rmx        = 17;
  67. static const char kTarget_x            = 18;
  68. static const char kTarget_hx        = 19;
  69. static const char kTarget_lx        = 20;
  70. static const char kTarget_s            = 21;
  71. static const char kTarget_o            = 22;
  72. static const char kTarget_ho        = 23;
  73. static const char kTarget_lo        = 24;
  74. static const char kTarget_a            = 25;
  75. static const char kTarget_ha        = 26;
  76. static const char kTarget_la        = 27;
  77. static const char kTarget_r3264        = 28;
  78. static const char kTarget_r163264    = 29;
  79. static const char kTarget_ext        = 30;
  80.  
  81. static const char kTarget_ext_r3264rexX    = 1;
  82. static const char kTarget_ext_r3264rexB = 2;
  83. static const char kTarget_ext_r163264rexB = 3;
  84.  
  85. static const char kTarget_ap        = (char)224;
  86. static const char kTarget_p_cs        = (char)225;
  87. static const char kTarget_p_ss        = (char)226;
  88. static const char kTarget_p_ds        = (char)227;
  89. static const char kTarget_p_es        = (char)228;
  90. static const char kTarget_p_fs        = (char)229;
  91. static const char kTarget_p_gs        = (char)230;
  92. static const char kTarget_p_66        = (char)231;
  93. static const char kTarget_p_67        = (char)232;
  94. static const char kTarget_p_F2        = (char)233;
  95. static const char kTarget_p_F3        = (char)234;
  96. static const char kTarget_p_rex        = (char)235;
  97.  
  98. #endif
  99.