opcode.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /* opcode.h - routine numbers and special opcodes for assembler */
  2. enum
  3. {
  4. /* Pseudo-op routine numbers.
  5. * Conditionals are first - this is used to test if op is a conditional.
  6. */
  7. ELSEOP,
  8. ELSEIFOP,
  9. ELSEIFCOP,
  10. ENDIFOP,
  11. IFOP,
  12. IFCOP,
  13. #define MIN_NONCOND ALIGNOP
  14. ALIGNOP,
  15. ASCIZOP,
  16. BLKWOP,
  17. BLOCKOP,
  18. BSSOP,
  19. COMMOP,
  20. COMMOP1,
  21. DATAOP,
  22. ENDBOP,
  23. ENTEROP,
  24. ENTRYOP,
  25. EQUOP,
  26. EVENOP,
  27. EXPORTOP,
  28. FAILOP,
  29. FCBOP,
  30. FCCOP,
  31. FDBOP,
  32. #if SIZEOF_OFFSET_T > 2
  33. FQBOP,
  34. #endif
  35. GETOP,
  36. GLOBLOP,
  37. IDENTOP,
  38. IMPORTOP,
  39. LCOMMOP,
  40. LCOMMOP1,
  41. LISTOP,
  42. LOCOP,
  43. MACLISTOP,
  44. MACROOP,
  45. MAPOP,
  46. ORGOP,
  47. PROCEOFOP,
  48. RMBOP,
  49. SECTOP,
  50. SETOP,
  51. SETDPOP,
  52. TEXTOP,
  53. #ifdef I80386
  54. USE16OP,
  55. USE32OP,
  56. #endif
  57. WARNOP,
  58. /* Machine-op routine numbers. */
  59. #ifdef I80386
  60. BCC,
  61. BSWAP,
  62. CALL,
  63. CALLI,
  64. DIVMUL,
  65. ENTER,
  66. EwGw,
  67. ExGx,
  68. F_INHER,
  69. F_M,
  70. F_M2,
  71. F_M2_AX,
  72. F_M2_M4,
  73. F_M2_M4_M8,
  74. F_M4_M8_OPTST,
  75. F_M4_M8_ST,
  76. F_M4_M8_STST,
  77. F_M4_M8_M10_ST,
  78. F_M10,
  79. F_OPTST,
  80. F_ST,
  81. F_STST,
  82. F_W_INHER,
  83. F_W_M,
  84. F_W_M2,
  85. F_W_M2_AX,
  86. GROUP1,
  87. GROUP2,
  88. GROUP6,
  89. GROUP7,
  90. GROUP8,
  91. GvEv,
  92. GvMa,
  93. GvMp,
  94. IMUL,
  95. IN,
  96. INCDEC,
  97. INHER,
  98. INHER16,
  99. INHER32,
  100. INHER_A,
  101. INT,
  102. JCC,
  103. JCXZ,
  104. LEA,
  105. MOV,
  106. MOVX,
  107. NEGNOT,
  108. OUT,
  109. PUSHPOP,
  110. RET,
  111. SEG,
  112. SETCC,
  113. SH_DOUBLE,
  114. TEST,
  115. XCHG
  116. #endif /* I80386 */
  117. #ifdef MC6809
  118. ALL, /* all address modes allowed, like LDA */
  119. ALTER, /* all but immediate, like STA */
  120. IMMED, /* immediate only (ANDCC, ORCC) */
  121. INDEXD, /* indexed (LEA's) */
  122. INHER, /* inherent, like CLC or CLRA */
  123. LONG, /* long branches */
  124. SHORT, /* short branches */
  125. SSTAK, /* S-stack (PSHS, PULS) */
  126. SWAP, /* TFR, EXG */
  127. USTAK /* U-stack (PSHU,PULU) */
  128. #endif /* MC6809 */
  129. };
  130. /* Special opcodes. */
  131. #ifdef I80386
  132. # define CMP_OPCODE_BASE 0x38
  133. # define CMPSB_OPCODE 0xA6
  134. # define CMPSW_OPCODE 0xA7
  135. # define ESCAPE_OPCODE_BASE 0xD8
  136. # define FST_ENCODED 0x12
  137. # define FSTP_ENCODED 0x13
  138. # define JMP_OPCODE 0xE9
  139. # define JMP_SHORT_OPCODE 0xEB
  140. # define JSR_OPCODE 0xE8
  141. # define MOVSB_OPCODE 0xA4
  142. # define MOVSW_OPCODE 0xA5
  143. # define PAGE1_OPCODE 0x0F
  144. # define POP_OPCODE 0x8F
  145. # define PUSH_OPCODE 0xFF
  146. # define WAIT_OPCODE 0x9B
  147. #endif
  148. #ifdef MC6809
  149. # define JMP_OPCODE 0x7E
  150. # define JSR_OPCODE 0xBD
  151. # define PAGE1_OPCODE 0x10
  152. # define PAGE2_OPCODE 0x11
  153. #endif