as_table 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. add_l src:QUICK, dst ==> code_instr( 0x5, src->val, 0x2, dst).
  2. ... src:IMMEDIATE, dst:A_REG ==> @if ( small( %$(src->expr)))
  3. @text2( 0x5088 | (%d(dst->reg) & 0x7) |
  4. ((%$(src->expr) & 0x7) << 9)).
  5. @else
  6. code_instr( 0xd, dst->reg, 0x7, src).
  7. @fi.
  8. ... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x3, 0x2, dst);
  9. code_extension( src);
  10. code_extension( dst).
  11. ... src, dst:D_REG ==> code_instr( 0xd, dst->reg, 0x6, src).
  12. ... src, dst:A_REG ==> code_instr( 0xd, dst->reg, 0x7, src).
  13. ... src:D_REG, dst ==> code_instr( 0xd, src->reg, 0x6, dst).
  14. and_l src:QUICK, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
  15. code_extension( src);
  16. code_extension( dst).
  17. ... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
  18. code_extension( src);
  19. code_extension( dst).
  20. ... src:D_REG, dst ==> code_instr( 0xc, src->reg, 0x6, dst).
  21. asl_l cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe1a0 | (cnt->reg << 9) |
  22. dst->reg)).
  23. asr_l cnt:QUICK, dst:D_REG ==> @text2( %d( 0xe080 | (cnt->val << 9) |
  24. dst->reg)).
  25. ... cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe0a0 | (cnt->reg << 9) |
  26. dst->reg)).
  27. bcc dst:LOC_LBL ==> @text1(0x64);
  28. @text1(%dist( dst->lbl)).
  29. ... dst:GLOB_LBL ==> @text2( 0x64ff);
  30. code_dist4( dst).
  31. bcs dst:LOC_LBL ==> @text1( 0x65);
  32. @text1(%dist( dst->lbl)).
  33. ... dst:GLOB_LBL ==> @text2( 0x65ff);
  34. code_dist4( dst).
  35. beq dst:LOC_LBL ==> @text1( 0x67);
  36. @text1(%dist( dst->lbl)).
  37. ... dst:GLOB_LBL ==> @text2( 0x67ff);
  38. code_dist4( dst).
  39. bge dst:LOC_LBL ==> @text1( 0x6c);
  40. @text1(%dist( dst->lbl)).
  41. ... dst:GLOB_LBL ==> @text2( 0x6cff);
  42. code_dist4( dst).
  43. bgt dst:LOC_LBL ==> @text1( 0x6e);
  44. @text1(%dist( dst->lbl)).
  45. ... dst:GLOB_LBL ==> @text2( 0x6eff);
  46. code_dist4( dst).
  47. ble dst:LOC_LBL ==> @text1( 0x6f);
  48. @text1(%dist( dst->lbl)).
  49. ... dst:GLOB_LBL ==> @text2( 0x6fff);
  50. code_dist4( dst).
  51. bls dst:LOC_LBL ==> @text1( 0x63);
  52. @text1(%dist( dst->lbl)).
  53. ... dst:GLOB_LBL ==> @text2( 0x63ff);
  54. code_dist4( dst).
  55. blt dst:LOC_LBL ==> @text1( 0x6d);
  56. @text1(%dist( dst->lbl)).
  57. ... dst:GLOB_LBL ==> @text2( 0x6dff);
  58. code_dist4( dst).
  59. bmi dst:LOC_LBL ==> @text1( 0x6b);
  60. @text1(%dist( dst->lbl)).
  61. ... dst:GLOB_LBL ==> @text2( 0x6bff);
  62. code_dist4( dst).
  63. bne dst:LOC_LBL ==> @text1( 0x66);
  64. @text1(%dist( dst->lbl)).
  65. ... dst:GLOB_LBL ==> @text2( 0x66ff);
  66. code_dist4( dst).
  67. bra dst:LOC_LBL ==> @text1( 0x60);
  68. @text1(%dist( dst->lbl)).
  69. ... dst:GLOB_LBL ==> @text2( 0x60ff);
  70. code_dist4( dst).
  71. bset nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x7, dst).
  72. btst nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x4, dst).
  73. bchg nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x5, dst).
  74. clr_l dst ==> code_instr( 0x4, 0x1, 0x2, dst).
  75. cmp_l src:INCR, dst:INCR ==> @text2( 0xb188 | %d( src->reg << 9) |
  76. %d( dst->reg)).
  77. ... src, dst:D_REG ==> code_instr( 0xb, dst->reg, 0x2, src).
  78. cmp2_l src, reg:D_REG ==> code_opcode( 0x0, 0x2, 0x3, src);
  79. @text2( (%d(reg->reg) & 0x7) << 12);
  80. code_extension( src).
  81. dbf reg:D_REG, dst:LOC_LBL ==> @text2( 0x51c8 | (%d(reg->reg) & 0x7));
  82. @text2( %dist(dst->lbl) + 2).
  83. divs_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
  84. @text2( 0x800 | (%d(dst->reg) & 0x7) |
  85. ((%d(dst->reg) & 0x7) << 12));
  86. code_extension( src).
  87. divsl_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
  88. @text2( 0x800 | (%d(dst->reg) & 0x7) |
  89. ((%d(dst->reg2) & 0x7) << 12));
  90. code_extension( src).
  91. divu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
  92. @text2( (%d(dst->reg) & 0x7) |
  93. ((%d(dst->reg) & 0x7) << 12));
  94. code_extension( src).
  95. divul_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
  96. @text2( (%d(dst->reg) & 0x7) |
  97. ((%d(dst->reg2) & 0x7) << 12));
  98. code_extension( src).
  99. eor_l src:D_REG, dst ==> code_instr( 0xb, src->reg, 0x6, dst).
  100. ext_w dst:D_REG ==> @text2( 0x4880 | (%d(dst->reg) & 0x7)).
  101. ext_l dst:D_REG ==> @text2( 0x48c0 | (%d(dst->reg) & 0x7)).
  102. extl_l dst:D_REG ==> @text2( 0x49c0 | (%d(dst->reg) & 0x7)).
  103. jmp dst ==> code_instr( 0x4, 0x7, 0x3, dst).
  104. jsr dst ==> code_instr( 0x4, 0x7, 0x2, dst).
  105. lea src, dst:A_REG ==> code_instr( 0x4, dst->reg, 0x7, src).
  106. link reg:A_REG, displ:IMMEDIATE ==> @text2( 0x4808 | %d(reg->reg));
  107. @text4( %$(displ->expr)).
  108. lsr_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0a8 | (%d(dst->reg) & 0x7) |
  109. ((%d(cnt->reg) & 0x7) << 9)).
  110. move_b src, dst ==> code_move( 0x1, src, dst).
  111. move_l src, dst:A_REG ==> code_instr( 0x2, dst->reg, 0x1, src).
  112. ... src, dst ==> code_move( 0x2, src, dst).
  113. move_w src, dst ==> code_move( 0x3, src, dst).
  114. muls_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
  115. @text2( 0x800 | (%d(dst->reg) & 0x7) |
  116. ((%d(dst->reg) & 0x7) << 12));
  117. code_extension( src).
  118. mulu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
  119. @text2( (%d(dst->reg) & 0x7) |
  120. ((%d(dst->reg) & 0x7) << 12));
  121. code_extension( src).
  122. neg_l dst ==> code_instr( 0x4, 0x2, 0x2, dst).
  123. not_l dst ==> code_instr( 0x4, 0x3, 0x2, dst).
  124. or_l src:D_REG, dst ==> code_instr( 0x8, src->reg, 0x6, dst).
  125. pea src ==> code_instr( 0x4, 0x4, 0x1, src).
  126. rol_l cnt:D_REG, dst:D_REG ==> @text2( 0xe1b8 | (%d(dst->reg) & 0x7) |
  127. ((%d(cnt->reg) & 0x7) << 9)).
  128. ror_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0b8 | (%d(dst->reg) & 0x7) |
  129. ((%d(cnt->reg) & 0x7) << 9)).
  130. rts ==> @text2( 0x4e75).
  131. sne dst ==> code_instr( 0x5, 0x3, 0x3, dst).
  132. sub_l src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x2, 0x2, dst);
  133. code_extension( src);
  134. code_extension( dst).
  135. ... src:QUICK, dst ==> code_instr( 0x5, src->val, 0x6, dst).
  136. ... src:D_REG, dst ==> code_instr( 0x9, src->reg, 0x6, dst).
  137. tst_l dst ==> code_instr( 0x4, 0x5, 0x2, dst).
  138. unlk reg:A_REG ==> @text2( 0x4e58 | %d(reg->reg)).