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 REGRET = 0, /* return register and first temp, grows++ */ 10 REGARG = 0, /* first arg passed in */ 11 REGEXT = 15, /* first external register, grows-- */ 12 13 REGLINK = 26, /* subroutine linkage */ 14 REGTMP = 27, /* used by the loader */ 15 REGTMP2 = 28, /* used by the loader */ 16 REGSB = 29, /* static pointer */ 17 REGSP = 30, /* stack pointer */ 18 REGZERO = 31, /* always zero */ 19 20 FREGRET = 0, 21 FREGEXT = 27, /* first external register */ 22 FREGHALF = 28, /* double */ 23 FREGONE = 29, /* double */ 24 FREGTWO = 30, /* double */ 25 FREGZERO = 31, /* both float and double */ 26 }; 27 28 enum as 29 { 30 AXXX, 31 AGOK, 32 ATEXT, 33 ADATA, 34 AGLOBL, 35 AHISTORY, 36 ANAME, 37 AWORD, 38 39 ANOP, 40 41 AMOVL, 42 AMOVLU, 43 AMOVQ, 44 AMOVQU, 45 AMOVS, 46 AMOVT, 47 48 AMOVB, 49 AMOVBU, 50 AMOVW, 51 AMOVWU, 52 53 AMOVA, 54 AMOVAH, 55 56 AMOVLL, 57 AMOVQL, 58 AMOVLC, 59 AMOVQC, 60 61 AMOVQP, 62 AMOVLP, 63 64 AADDL, 65 AADDLV, 66 AADDQ, 67 AADDQV, 68 AS4ADDL, 69 AS4ADDQ, 70 AS8ADDL, 71 AS8ADDQ, 72 AS4SUBL, 73 AS4SUBQ, 74 AS8SUBL, 75 AS8SUBQ, 76 ASUBL, 77 ASUBLV, 78 ASUBQ, 79 ASUBQV, 80 81 ACMPEQ, 82 ACMPGT, 83 ACMPGE, 84 ACMPUGT, 85 ACMPUGE, 86 ACMPBLE, 87 88 AAND, 89 AANDNOT, 90 AOR, 91 AORNOT, 92 AXOR, 93 AXORNOT, 94 95 ACMOVEQ, 96 ACMOVNE, 97 ACMOVLT, 98 ACMOVGE, 99 ACMOVLE, 100 ACMOVGT, 101 ACMOVLBC, 102 ACMOVLBS, 103 104 AMULL, 105 AMULQ, 106 AMULLV, 107 AMULQV, 108 AUMULH, 109 ADIVQ, 110 AMODQ, 111 ADIVQU, 112 AMODQU, 113 ADIVL, 114 AMODL, 115 ADIVLU, 116 AMODLU, 117 118 ASLLQ, 119 ASRLQ, 120 ASRAQ, 121 ASLLL, 122 ASRLL, 123 ASRAL, 124 125 AEXTBL, 126 AEXTWL, 127 AEXTLL, 128 AEXTQL, 129 AEXTWH, 130 AEXTLH, 131 AEXTQH, 132 133 AINSBL, 134 AINSWL, 135 AINSLL, 136 AINSQL, 137 AINSWH, 138 AINSLH, 139 AINSQH, 140 141 AMSKBL, 142 AMSKWL, 143 AMSKLL, 144 AMSKQL, 145 AMSKWH, 146 AMSKLH, 147 AMSKQH, 148 149 AZAP, 150 AZAPNOT, 151 152 AJMP, 153 AJSR, 154 ARET, 155 156 ABR, 157 ABSR, 158 159 ABEQ, 160 ABNE, 161 ABLT, 162 ABGE, 163 ABLE, 164 ABGT, 165 ABLBC, 166 ABLBS, 167 168 AFBEQ, 169 AFBNE, 170 AFBLT, 171 AFBGE, 172 AFBLE, 173 AFBGT, 174 175 ATRAPB, 176 AMB, 177 AFETCH, 178 AFETCHM, 179 ARPCC, 180 181 ACPYS, 182 ACPYSN, 183 ACPYSE, 184 ACVTLQ, 185 ACVTQL, 186 AFCMOVEQ, 187 AFCMOVNE, 188 AFCMOVLT, 189 AFCMOVGE, 190 AFCMOVLE, 191 AFCMOVGT, 192 193 AADDS, 194 AADDT, 195 ACMPTEQ, 196 ACMPTGT, 197 ACMPTGE, 198 ACMPTUN, 199 ACVTQS, 200 ACVTQT, 201 ACVTTS, 202 ACVTTQ, 203 ADIVS, 204 ADIVT, 205 AMULS, 206 AMULT, 207 ASUBS, 208 ASUBT, 209 210 ACALL_PAL, 211 AREI, 212 213 AEND, 214 215 ADYNT, 216 AINIT, 217 218 ASIGNAME, 219 220 ALAST, 221 }; 222 223 /* type/name */ 224 enum 225 { 226 D_GOK = 0, 227 D_NONE, 228 229 /* name */ 230 D_EXTERN, 231 D_STATIC, 232 D_AUTO, 233 D_PARAM, 234 235 /* type */ 236 D_BRANCH, 237 D_OREG, 238 D_CONST, 239 D_FCONST, 240 D_SCONST, 241 D_REG, 242 D_FREG, 243 D_FCREG, 244 D_PREG, 245 D_PCC, 246 D_FILE, 247 D_FILE1, 248 }; 249 250 /* 251 * this is the ranlib header 252 */ 253 #define SYMDEF "__.SYMDEF" 254 255 /* 256 * this is the simulated IEEE floating point 257 */ 258 typedef struct ieee Ieee; 259 struct ieee 260 { 261 long l; /* contains ls-man 0xffffffff */ 262 long h; /* contains sign 0x80000000 263 exp 0x7ff00000 264 ms-man 0x000fffff */ 265 }; 266