ref: 3b7e03a30ed29ee0666c00568bf67b8179c28d12
dir: /sys/src/cmd/kc/k.out.h/
#define NSNAME 8 #define NSYM 50 #define NREG 32 #define NOPROF (1<<0) #define DUPOK (1<<1) enum { REGZERO = 0, /* always zero */ REGSP = 1, /* stack pointer */ REGSB = 2, /* static pointer */ REGSB1 = 3, /* (possible) second static pointer */ REGEXT = 6, /* first external register, grows-- */ REGRET = 7, /* return register and first temp, grows++ */ REGTMP = 14, /* used by the loader */ REGLINK = 15, /* subroutine linkage */ REGARG = 7, /* first arg passed in */ FREGRET = 0, FREGEXT = 22, /* first external register */ FREGZERO = 24, /* both float and double */ FREGHALF = 26, /* double */ FREGONE = 28, /* double */ FREGTWO = 30 /* double */ /* * GENERAL: * * compiler allocates R7 up as temps * compiler allocates external registers R6 down * compiler allocates register variables F4-F22 * compiler allocates external registers F22 down */ }; enum as { AXXX = 0, AADD, AADDCC, AADDX, AADDXCC, AAND, AANDCC, AANDN, AANDNCC, ABA, ABCC, ABCS, ABE, ABG, ABGE, ABGU, ABL, ABLE, ABLEU, ABN, ABNE, ABNEG, ABPOS, ABVC, ABVS, ACB0, ACB01, ACB012, ACB013, ACB02, ACB023, ACB03, ACB1, ACB12, ACB123, ACB13, ACB2, ACB23, ACB3, ACBA, ACBN, ACMP, /* pseudo op */ ACPOP1, ACPOP2, ADATA, ADIV, ADIVL, AFABSD, /* pseudo op */ AFABSF, AFABSX, /* pseudo op */ AFADDD, AFADDF, AFADDX, AFBA, AFBE, AFBG, AFBGE, AFBL, AFBLE, AFBLG, AFBN, AFBNE, AFBO, AFBU, AFBUE, AFBUG, AFBUGE, AFBUL, AFBULE, AFCMPD, AFCMPED, AFCMPEF, AFCMPEX, AFCMPF, AFCMPX, AFDIVD, AFDIVF, AFDIVX, AFMOVD, /* pseudo op */ AFMOVDF, AFMOVDW, AFMOVDX, AFMOVF, AFMOVFD, AFMOVFW, AFMOVFX, AFMOVWD, AFMOVWF, AFMOVWX, AFMOVX, /* pseudo op */ AFMOVXD, AFMOVXF, AFMOVXW, AFMULD, AFMULF, AFMULX, AFNEGD, /* pseudo op */ AFNEGF, AFNEGX, /* pseudo op */ AFSQRTD, AFSQRTF, AFSQRTX, AFSUBD, AFSUBF, AFSUBX, AGLOBL, AGOK, AHISTORY, AIFLUSH, AJMPL, AJMP, AMOD, AMODL, AMOVB, AMOVBU, AMOVD, AMOVH, AMOVHU, AMOVW, AMUL, AMULSCC, ANAME, ANOP, AOR, AORCC, AORN, AORNCC, ARESTORE, ARETT, ARETURN, ASAVE, ASLL, ASRA, ASRL, ASUB, ASUBCC, ASUBX, ASUBXCC, ASWAP, ATA, ATADDCC, ATADDCCTV, ATAS, ATCC, ATCS, ATE, ATEXT, ATG, ATGE, ATGU, ATL, ATLE, ATLEU, ATN, ATNE, ATNEG, ATPOS, ATSUBCC, ATSUBCCTV, ATVC, ATVS, AUNIMP, AWORD, AXNOR, AXNORCC, AXOR, AXORCC, AEND, ADYNT, AINIT, ASIGNAME, ALAST }; /* type/name */ enum { D_GOK = 0, D_NONE, /* name */ D_EXTERN, D_STATIC, D_AUTO, D_PARAM, /* type */ D_BRANCH, D_OREG, D_ASI, D_CONST, D_FCONST, D_SCONST, D_REG, D_FREG, D_CREG, D_PREG, D_FILE, D_FILE1, /* reg names iff type is D_PREG */ D_CPQ = 0, D_CSR, D_FPQ, D_FSR, D_PSR, D_TBR, D_WIM, D_Y }; /* * this is the ranlib header */ #define SYMDEF "__.SYMDEF" /* * this is the simulated IEEE floating point */ typedef struct ieee Ieee; struct ieee { long l; /* contains ls-man 0xffffffff */ long h; /* contains sign 0x80000000 exp 0x7ff00000 ms-man 0x000fffff */ };