as_table 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. add dst:REG, src:EADDR ==> @text1( 0x3);
  2. mod_RM( dst->reg, src).
  3. ... dst:ACCU, src:DATA ==> @text1( 0x5);
  4. @text4( %$(src->expr)).
  5. ... dst:EADDR, src:DATA ==> small_RMconst(0x81, 0, dst, src).
  6. and dst:REG, src:EADDR ==> @text1( 0x23);
  7. mod_RM( dst->reg, src).
  8. ... dst:ACCU, src:DATA ==> @text1( 0x25);
  9. @text4( %$(src->expr)).
  10. call dst:lABEL ==> @text1( 0xe8);
  11. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  12. ... dst:EADDR ==> @text1( 0xff);
  13. mod_RM( 2, dst).
  14. cdq ==> @text1(0x99).
  15. cmp dst:REG, src:EADDR ==> @text1( 0x3b);
  16. mod_RM( dst->reg, src).
  17. ... dst:ACCU, src:DATA ==> @text1( 0x3d);
  18. @text4( %$(src->expr)).
  19. ... dst:EADDR, src:DATA ==> small_RMconst(0x81, 7, dst, src).
  20. dec dst:REG ==> R53( 9, dst->reg).
  21. ... dst:EADDR ==> @text1( 0xff);
  22. mod_RM( 1, dst).
  23. div divisor:EADDR ==> @text1( 0xf7);
  24. mod_RM( 6, divisor).
  25. enter nm:DATA, nm1:DATA ==> @text1( 0xc8);
  26. @text2( %$(nm->expr));
  27. @text1( %$(nm1->expr)).
  28. idiv divisor:EADDR ==> @text1( 0xf7);
  29. mod_RM( 7, divisor).
  30. imul mplier:EADDR ==> @text1( 0xf7);
  31. mod_RM( 5, mplier).
  32. inc dst:REG ==> R53( 8, dst->reg).
  33. ... dst:EADDR ==> @text1( 0xff);
  34. mod_RM( 0, dst).
  35. jb dst:ILB ==> @text1( 0x72);
  36. @text1( %dist( dst->lab)).
  37. ... dst:lABEL ==> @text1(0x0f);
  38. @text1(0x82);
  39. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  40. je dst:ILB ==> @text1( 0x74);
  41. @text1( %dist( dst->lab)).
  42. ... dst:lABEL ==> @text1(0x0f);
  43. @text1(0x84);
  44. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  45. jg dst:ILB ==> @text1( 0x7f);
  46. @text1( %dist( dst->lab)).
  47. ... dst:lABEL ==> @text1(0x0f);
  48. @text1(0x8f);
  49. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  50. jge dst:ILB ==> @text1( 0x7d);
  51. @text1( %dist( dst->lab)).
  52. ... dst:lABEL ==> @text1(0x0f);
  53. @text1(0x8d);
  54. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  55. jl dst:ILB ==> @text1( 0x7c);
  56. @text1( %dist( dst->lab)).
  57. ... dst:lABEL ==> @text1(0x0f);
  58. @text1(0x8c);
  59. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  60. jle dst:ILB ==> @text1( 0x7e);
  61. @text1( %dist( dst->lab)).
  62. ... dst:lABEL ==> @text1(0x0f);
  63. @text1(0x8e);
  64. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  65. jmp dst:ILB ==> @text1( 0xeb);
  66. @text1( %dist( dst->lab)).
  67. ... dst:lABEL ==> @text1( 0xe9);
  68. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  69. jne dst:ILB ==> @text1( 0x75);
  70. @text1( %dist( dst->lab)).
  71. ... dst:lABEL ==> @text1(0x0f);
  72. @text1(0x85);
  73. @reloc4( %$(dst->lab), %$(dst->off), PC_REL).
  74. lea dst:REG, src:EADDR ==> @text1( 0x8d);
  75. mod_RM( dst->reg, src).
  76. loop dst:ILB ==> @text1( 0xe2);
  77. @text1( %dist( dst->lab)).
  78. mov dst:REG, src:EADDR ==> mv_RG_EADDR( dst, src).
  79. ... dst:REG, src:DATA ==> R53( 0x17, dst->reg);
  80. @text4(%$(src->expr)).
  81. ... dst:EADDR, src:REG ==> @text1( 0x89);
  82. mod_RM( src->reg, dst).
  83. ... dst:EADDR, src:DATA ==> @text1( 0xc7);
  84. mod_RM( 0, dst);
  85. @text4( %$(src->expr)).
  86. ... dst:EADDR, src:lABEL ==> @text1( 0xc7);
  87. mod_RM( 0, dst);
  88. @reloc4( %$(src->lab), %$(src->off), ABSOLUTE).
  89. movw dst:EADDR, src:REG ==> @text1( 0x66); /* operand size prefix */
  90. @text1( 0x89);
  91. mod_RM( src->reg, dst).
  92. movb dst:EADDR, src:REG ==> @text1( 0x88);
  93. mod_RM( src->reg, dst).
  94. movzxb dst:REG, src:EADDR ==> @text1(0x0f);
  95. @text1(0xb6);
  96. mod_RM(dst->reg, src).
  97. movzx dst:REG, src:EADDR ==> @text1(0x0f);
  98. @text1(0xb7);
  99. mod_RM(dst->reg, src).
  100. mul mplier:EADDR ==> @text1( 0xf7);
  101. mod_RM( 4, mplier).
  102. neg dst:EADDR ==> @text1( 0xf7);
  103. mod_RM( 3, dst).
  104. not dst:EADDR ==> @text1( 0xf7);
  105. mod_RM( 2, dst).
  106. or dst:REG, src:EADDR ==> @text1( 0x0b);
  107. mod_RM( dst->reg, src).
  108. pop dst:REG ==> R53( 0xb, dst->reg).
  109. ... dst:EADDR ==> @text1( 0x8f);
  110. mod_RM( 0, dst).
  111. /*
  112. POP dst ==> @if ( push_waiting)
  113. mov_instr( dst, AX_oper);
  114. @assign( push_waiting, FALSE).
  115. @else
  116. pop_instr( dst).
  117. @fi.
  118. */
  119. push src:REG ==> R53( 0xa, src->reg).
  120. ... src:DATA ==> small_const(0x68, src).
  121. ... src:lABEL ==> @text1(0x68);
  122. @reloc4(%$(src->lab), %$(src->off), ABSOLUTE).
  123. ... src:EADDR ==> @text1( 0xff);
  124. mod_RM( 6, src).
  125. /*
  126. PUSH src ==> mov_instr( AX_oper, src);
  127. @assign( push_waiting, TRUE).
  128. */
  129. ret ==> @text1( 0xc3). /* Always NEAR! */
  130. leave ==> @text1( 0xc9). /* Always NEAR! */
  131. rol dst:EADDR, src:REG_CL ==> @text1( 0xd3);
  132. mod_RM( 0, dst).
  133. ror dst:EADDR, src:REG_CL ==> @text1( 0xd3);
  134. mod_RM( 1, dst).
  135. sal dst:EADDR, src:REG_CL ==> @text1( 0xd3);
  136. mod_RM( 4, dst).
  137. sar dst:EADDR, src:REG_CL ==> @text1( 0xd3);
  138. mod_RM( 7, dst).
  139. ... dst:EADDR, src:DATA ==> @text1( 0xc1);
  140. mod_RM( 7, dst);
  141. @text1(%$(src->expr)).
  142. shl dst:EADDR, src:REG_CL ==> @text1(0xd3);
  143. mod_RM(4, dst).
  144. shr dst:EADDR, src:REG_CL ==> @text1( 0xd3);
  145. mod_RM( 5, dst).
  146. sub dst:REG, src:EADDR ==> @text1( 0x2b);
  147. mod_RM( dst->reg, src).
  148. ... dst:EADDR, src:DATA ==> small_RMconst(0x81, 5, dst, src).
  149. test dst:REG, src:EADDR ==> @text1( 0x85);
  150. mod_RM( dst->reg, src).
  151. xchg dst:EADDR, src:REG ==> @text1( 0x87);
  152. mod_RM( src->reg, dst).
  153. xor dst:REG, src:EADDR ==> @text1( 0x33);
  154. mod_RM( dst->reg, src).