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 AXXXdummy, // to temporarily make ANAME/ASIGNAME different than .k's 159 ANAME, 160 ANOP, 161 AOR, 162 AORCC, 163 AORN, 164 AORNCC, 165 ARESTORE, 166 ARETT, 167 ARETURN, 168 ASAVE, 169 ASLL, 170 ASRA, 171 ASRL, 172 ASUB, 173 ASUBCC, 174 ASUBX, 175 ASUBXCC, 176 ASWAP, 177 ATA, 178 ATADDCC, 179 ATADDCCTV, 180 ATAS, 181 ATCC, 182 ATCS, 183 ATE, 184 ATEXT, 185 ATG, 186 ATGE, 187 ATGU, 188 ATL, 189 ATLE, 190 ATLEU, 191 ATN, 192 ATNE, 193 ATNEG, 194 ATPOS, 195 ATSUBCC, 196 ATSUBCCTV, 197 ATVC, 198 ATVS, 199 AUNIMP, 200 AWORD, 201 AXNOR, 202 AXNORCC, 203 AXOR, 204 AXORCC, 205 AEND, 206 ADYNT, 207 AINIT, 208 ASIGNAME, 209 ALAST 210 }; 211 212 /* type/name */ 213 enum 214 { 215 D_GOK = 0, 216 D_NONE, 217 218 /* name */ 219 D_EXTERN, 220 D_STATIC, 221 D_AUTO, 222 D_PARAM, 223 224 /* type */ 225 D_BRANCH, 226 D_OREG, 227 D_ASI, 228 D_CONST, 229 D_FCONST, 230 D_SCONST, 231 D_REG, 232 D_FREG, 233 D_CREG, 234 D_PREG, 235 D_FILE, 236 D_FILE1, 237 238 /* reg names iff type is D_PREG */ 239 D_CPQ = 0, 240 D_CSR, 241 D_FPQ, 242 D_FSR, 243 D_PSR, 244 D_TBR, 245 D_WIM, 246 D_Y 247 }; 248 249 /* 250 * this is the ranlib header 251 */ 252 #define SYMDEF "__.SYMDEF" 253 254 /* 255 * this is the simulated IEEE floating point 256 */ 257 typedef struct ieee Ieee; 258 struct ieee 259 { 260 long l; /* contains ls-man 0xffffffff */ 261 long h; /* contains sign 0x80000000 262 exp 0x7ff00000 263 ms-man 0x000fffff */ 264 }; 265