u.out.h 3.5 KB

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