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