x.out.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #define NSNAME 8
  2. #define NSYM 50
  3. #define NREG 27 /* r0-r22 + pc + pcsh + +n + -n */
  4. #define NFREG 4
  5. #define NCREG 16
  6. enum
  7. {
  8. REGZERO = 0, /* always zero */
  9. REGSP = 1, /* stack pointer */
  10. REGRET = 3, /* return register and first temp, grows++ to REGMAX*/
  11. REGMAX = 12,
  12. REGEXT = 14, /* first external register, grows-- to REGMAX+1 */
  13. REGPTR = 14, /* last floating pointer register */
  14. REGTMP = 2, /* used by the loader */
  15. REGLINK = 18, /* subroutine linkage */
  16. REGARG = 3, /* first arg passed in */
  17. REGPC = 23, /* pc */
  18. REGPCSH = 24, /* shadowd pc */
  19. REGPOS = 25, /* +n */
  20. REGNEG = 26, /* -n */
  21. FREGRET = 0,
  22. FREGEXT = 0, /* no external registers */
  23. FREGTMP = 3, /* used by compiler only */
  24. /*
  25. * GENERAL:
  26. *
  27. * no static base register
  28. * compiler allocates R2 up as temps
  29. * compiler allocates external registers R14-R12
  30. * compiler allocates register variables F0-F3
  31. * compiler allocates external registers F3 down
  32. */
  33. };
  34. enum as
  35. {
  36. AXXX = 0,
  37. AADD,
  38. AADDCR,
  39. AADDCRH,
  40. AADDH,
  41. AAND,
  42. AANDH,
  43. AANDN,
  44. AANDNH,
  45. ABIT,
  46. ABITH,
  47. ACMP,
  48. ACMPH,
  49. ADIV, /* macro op */
  50. ADIVL, /* macro op */
  51. AMOVB,
  52. AMOVBU,
  53. AMOVHB,
  54. AMOVW,
  55. AMOVH,
  56. AMOVHU,
  57. AMOD, /* macro op */
  58. AMODL, /* macro op */
  59. AMUL, /* macro op */
  60. AOR,
  61. AORH,
  62. AROL,
  63. AROLH,
  64. AROR,
  65. ARORH,
  66. ASLL,
  67. ASLLH,
  68. ASRA,
  69. ASRAH,
  70. ASRL,
  71. ASRLH,
  72. ASUB,
  73. ASUBH,
  74. ASUBR, /* reverse operand order sub */
  75. ASUBRH,
  76. AXOR,
  77. AXORH,
  78. ABRA, /* conditional jump */
  79. ACALL,
  80. ADATA,
  81. ADBRA,
  82. ABMOVW, /* macro op */
  83. ADO,
  84. ADOLOCK,
  85. ADOEND, /* end of do/dolock */
  86. AGLOBL,
  87. AGOK,
  88. AHISTORY,
  89. AIRET,
  90. AJMP, /* unconditional jump */
  91. ANAME,
  92. ANOP,
  93. ARETURN,
  94. ASFTRST,
  95. ATEXT,
  96. AWAITI,
  97. AWORD,
  98. AFADD,
  99. AFADDN,
  100. AFADDT,
  101. AFADDTN,
  102. AFDIV, /* macro op */
  103. AFDSP,
  104. AFIFEQ,
  105. AFIFGT,
  106. AFIEEE,
  107. AFIFLT,
  108. AFMOVF,
  109. AFMOVFN,
  110. AFMOVFB,
  111. AFMOVFW,
  112. AFMOVFH,
  113. AFMOVBF,
  114. AFMOVWF,
  115. AFMOVHF,
  116. AFMADD,
  117. AFMADDN,
  118. AFMADDT,
  119. AFMADDTN,
  120. AFMSUB,
  121. AFMSUBN,
  122. AFMSUBT,
  123. AFMSUBTN,
  124. AFMUL,
  125. AFMULN,
  126. AFMULT,
  127. AFMULTN,
  128. AFRND,
  129. AFSEED,
  130. AFSUB,
  131. AFSUBN,
  132. AFSUBT,
  133. AFSUBTN,
  134. AEND
  135. };
  136. /* type/name */
  137. enum
  138. {
  139. D_GOK = 0,
  140. D_NONE,
  141. /* name */
  142. D_EXTERN,
  143. D_STATIC,
  144. D_AUTO,
  145. D_PARAM,
  146. /* type */
  147. D_BRANCH,
  148. D_OREG, /* for branching only */
  149. D_NAME,
  150. D_REG,
  151. D_INDREG,
  152. D_INC,
  153. D_DEC,
  154. D_INCREG,
  155. D_CONST,
  156. D_FCONST,
  157. D_SCONST,
  158. D_FREG,
  159. D_CREG,
  160. D_FILE,
  161. D_LINE,
  162. D_AFCONST, /* address of floating constant */
  163. D_FILE1,
  164. };
  165. /* conditions */
  166. enum{
  167. CCXXX = 0,
  168. CCTRUE,
  169. CCFALSE,
  170. CCEQ,
  171. CCNE,
  172. CCGT,
  173. CCLE,
  174. CCLT,
  175. CCGE,
  176. CCHI, /* greater unsigned */
  177. CCLS, /* less or equal, unsigned */
  178. CCCC, /* greater or equal, unsigned */
  179. CCCS, /* less then, unsigned */
  180. CCMI,
  181. CCPL,
  182. CCOC,
  183. CCOS,
  184. CCFNE,
  185. CCFEQ,
  186. CCFGE,
  187. CCFLT,
  188. CCFOC,
  189. CCFOS,
  190. CCFUC,
  191. CCFUS,
  192. CCFGT,
  193. CCFLE,
  194. CCIBE,
  195. CCIBF,
  196. CCOBE,
  197. CCOBF,
  198. CCSYC,
  199. CCSYS,
  200. CCFBC,
  201. CCFBS,
  202. CCIR0C,
  203. CCIR0S,
  204. CCIR1C,
  205. CCIR1S,
  206. CCEND
  207. };
  208. /*
  209. * this is the ranlib header
  210. */
  211. #define SYMDEF "__.SYMDEF"
  212. /*
  213. * this is the simulated dsp floating point
  214. */
  215. enum{
  216. Dspbits = 23, /* bits in a dsp mantissa */
  217. Dspmask = (1<<Dspbits) - 1, /* mask for mantissa */
  218. Dspbias = 128, /* exponent bias */
  219. Dspexp = 0xff, /* mask for eponent */
  220. };
  221. typedef ulong Dsp; /* contains sign 0x80000000
  222. man 0x7fffff00
  223. exp 0x000000ff */