k.out.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #define NSNAME 8
  2. #define NSYM 50
  3. #define NREG 32
  4. #define NOPROF (1<<0)
  5. #define DUPOK (1<<1)
  6. enum
  7. {
  8. REGZERO = 0, /* always zero */
  9. REGSP = 1, /* stack pointer */
  10. REGSB = 2, /* static pointer */
  11. REGSB1 = 3, /* (possible) second static pointer */
  12. REGEXT = 6, /* first external register, grows-- */
  13. REGRET = 7, /* return register and first temp, grows++ */
  14. REGTMP = 14, /* used by the loader */
  15. REGLINK = 15, /* subroutine linkage */
  16. REGARG = 7, /* first arg passed in */
  17. FREGRET = 0,
  18. FREGEXT = 22, /* first external register */
  19. FREGZERO = 24, /* both float and double */
  20. FREGHALF = 26, /* double */
  21. FREGONE = 28, /* double */
  22. FREGTWO = 30, /* double */
  23. /*
  24. * GENERAL:
  25. *
  26. * compiler allocates R7 up as temps
  27. * compiler allocates external registers R6 down
  28. * compiler allocates register variables F4-F22
  29. * compiler allocates external registers F22 down
  30. */
  31. };
  32. enum as
  33. {
  34. AXXX = 0,
  35. AADD,
  36. AADDCC,
  37. AADDX,
  38. AADDXCC,
  39. AAND,
  40. AANDCC,
  41. AANDN,
  42. AANDNCC,
  43. ABA,
  44. ABCC,
  45. ABCS,
  46. ABE,
  47. ABG,
  48. ABGE,
  49. ABGU,
  50. ABL,
  51. ABLE,
  52. ABLEU,
  53. ABN,
  54. ABNE,
  55. ABNEG,
  56. ABPOS,
  57. ABVC,
  58. ABVS,
  59. ACB0,
  60. ACB01,
  61. ACB012,
  62. ACB013,
  63. ACB02,
  64. ACB023,
  65. ACB03,
  66. ACB1,
  67. ACB12,
  68. ACB123,
  69. ACB13,
  70. ACB2,
  71. ACB23,
  72. ACB3,
  73. ACBA,
  74. ACBN,
  75. ACMP, /* pseudo op */
  76. ACPOP1,
  77. ACPOP2,
  78. ADATA,
  79. ADIV,
  80. ADIVL,
  81. AFABSD, /* pseudo op */
  82. AFABSF,
  83. AFABSX, /* pseudo op */
  84. AFADDD,
  85. AFADDF,
  86. AFADDX,
  87. AFBA,
  88. AFBE,
  89. AFBG,
  90. AFBGE,
  91. AFBL,
  92. AFBLE,
  93. AFBLG,
  94. AFBN,
  95. AFBNE,
  96. AFBO,
  97. AFBU,
  98. AFBUE,
  99. AFBUG,
  100. AFBUGE,
  101. AFBUL,
  102. AFBULE,
  103. AFCMPD,
  104. AFCMPED,
  105. AFCMPEF,
  106. AFCMPEX,
  107. AFCMPF,
  108. AFCMPX,
  109. AFDIVD,
  110. AFDIVF,
  111. AFDIVX,
  112. AFMOVD, /* pseudo op */
  113. AFMOVDF,
  114. AFMOVDW,
  115. AFMOVDX,
  116. AFMOVF,
  117. AFMOVFD,
  118. AFMOVFW,
  119. AFMOVFX,
  120. AFMOVWD,
  121. AFMOVWF,
  122. AFMOVWX,
  123. AFMOVX, /* pseudo op */
  124. AFMOVXD,
  125. AFMOVXF,
  126. AFMOVXW,
  127. AFMULD,
  128. AFMULF,
  129. AFMULX,
  130. AFNEGD, /* pseudo op */
  131. AFNEGF,
  132. AFNEGX, /* pseudo op */
  133. AFSQRTD,
  134. AFSQRTF,
  135. AFSQRTX,
  136. AFSUBD,
  137. AFSUBF,
  138. AFSUBX,
  139. AGLOBL,
  140. AGOK,
  141. AHISTORY,
  142. AIFLUSH,
  143. AJMPL,
  144. AJMP,
  145. AMOD,
  146. AMODL,
  147. AMOVB,
  148. AMOVBU,
  149. AMOVD,
  150. AMOVH,
  151. AMOVHU,
  152. AMOVW,
  153. AMUL,
  154. AMULSCC,
  155. ANAME,
  156. ANOP,
  157. AOR,
  158. AORCC,
  159. AORN,
  160. AORNCC,
  161. ARESTORE,
  162. ARETT,
  163. ARETURN,
  164. ASAVE,
  165. ASLL,
  166. ASRA,
  167. ASRL,
  168. ASUB,
  169. ASUBCC,
  170. ASUBX,
  171. ASUBXCC,
  172. ASWAP,
  173. ATA,
  174. ATADDCC,
  175. ATADDCCTV,
  176. ATAS,
  177. ATCC,
  178. ATCS,
  179. ATE,
  180. ATEXT,
  181. ATG,
  182. ATGE,
  183. ATGU,
  184. ATL,
  185. ATLE,
  186. ATLEU,
  187. ATN,
  188. ATNE,
  189. ATNEG,
  190. ATPOS,
  191. ATSUBCC,
  192. ATSUBCCTV,
  193. ATVC,
  194. ATVS,
  195. AUNIMP,
  196. AWORD,
  197. AXNOR,
  198. AXNORCC,
  199. AXOR,
  200. AXORCC,
  201. AEND,
  202. ADYNT,
  203. AINIT,
  204. ALAST
  205. };
  206. /* type/name */
  207. enum
  208. {
  209. D_GOK = 0,
  210. D_NONE,
  211. /* name */
  212. D_EXTERN,
  213. D_STATIC,
  214. D_AUTO,
  215. D_PARAM,
  216. /* type */
  217. D_BRANCH,
  218. D_OREG,
  219. D_ASI,
  220. D_CONST,
  221. D_FCONST,
  222. D_SCONST,
  223. D_REG,
  224. D_FREG,
  225. D_CREG,
  226. D_PREG,
  227. D_FILE,
  228. D_FILE1,
  229. /* reg names iff type is D_PREG */
  230. D_CPQ = 0,
  231. D_CSR,
  232. D_FPQ,
  233. D_FSR,
  234. D_PSR,
  235. D_TBR,
  236. D_WIM,
  237. D_Y,
  238. };
  239. /*
  240. * this is the ranlib header
  241. */
  242. #define SYMDEF "__.SYMDEF"
  243. /*
  244. * this is the simulated IEEE floating point
  245. */
  246. typedef struct ieee Ieee;
  247. struct ieee
  248. {
  249. long l; /* contains ls-man 0xffffffff */
  250. long h; /* contains sign 0x80000000
  251. exp 0x7ff00000
  252. ms-man 0x000fffff */
  253. };