13e12c5d1SDavid du Colombier #include <ctype.h>
27dd7cddfSDavid du Colombier #define EXTERN
33e12c5d1SDavid du Colombier #include "a.h"
43e12c5d1SDavid du Colombier #include "y.tab.h"
53e12c5d1SDavid du Colombier
63e12c5d1SDavid du Colombier void
main(int argc,char * argv[])73e12c5d1SDavid du Colombier main(int argc, char *argv[])
83e12c5d1SDavid du Colombier {
97dd7cddfSDavid du Colombier char *p;
107dd7cddfSDavid du Colombier int nout, nproc, status, i, c;
113e12c5d1SDavid du Colombier
123e12c5d1SDavid du Colombier thechar = '8';
133e12c5d1SDavid du Colombier thestring = "386";
143e12c5d1SDavid du Colombier memset(debug, 0, sizeof(debug));
153e12c5d1SDavid du Colombier cinit();
163e12c5d1SDavid du Colombier outfile = 0;
173e12c5d1SDavid du Colombier include[ninclude++] = ".";
183e12c5d1SDavid du Colombier ARGBEGIN {
193e12c5d1SDavid du Colombier default:
203e12c5d1SDavid du Colombier c = ARGC();
213e12c5d1SDavid du Colombier if(c >= 0 || c < sizeof(debug))
223e12c5d1SDavid du Colombier debug[c] = 1;
233e12c5d1SDavid du Colombier break;
243e12c5d1SDavid du Colombier
253e12c5d1SDavid du Colombier case 'o':
263e12c5d1SDavid du Colombier outfile = ARGF();
273e12c5d1SDavid du Colombier break;
283e12c5d1SDavid du Colombier
293e12c5d1SDavid du Colombier case 'D':
303e12c5d1SDavid du Colombier p = ARGF();
313e12c5d1SDavid du Colombier if(p)
32219b2ee8SDavid du Colombier Dlist[nDlist++] = p;
333e12c5d1SDavid du Colombier break;
343e12c5d1SDavid du Colombier
353e12c5d1SDavid du Colombier case 'I':
363e12c5d1SDavid du Colombier p = ARGF();
377dd7cddfSDavid du Colombier setinclude(p);
383e12c5d1SDavid du Colombier break;
393e12c5d1SDavid du Colombier } ARGEND
403e12c5d1SDavid du Colombier if(*argv == 0) {
413e12c5d1SDavid du Colombier print("usage: %ca [-options] file.s\n", thechar);
423e12c5d1SDavid du Colombier errorexit();
433e12c5d1SDavid du Colombier }
447dd7cddfSDavid du Colombier if(argc > 1 && systemtype(Windows)){
457dd7cddfSDavid du Colombier print("can't assemble multiple files on windows\n");
467dd7cddfSDavid du Colombier errorexit();
477dd7cddfSDavid du Colombier }
487dd7cddfSDavid du Colombier if(argc > 1 && !systemtype(Windows)) {
497dd7cddfSDavid du Colombier nproc = 1;
503e12c5d1SDavid du Colombier if(p = getenv("NPROC"))
517dd7cddfSDavid du Colombier nproc = atol(p); /* */
523e12c5d1SDavid du Colombier c = 0;
533e12c5d1SDavid du Colombier nout = 0;
543e12c5d1SDavid du Colombier for(;;) {
553e12c5d1SDavid du Colombier while(nout < nproc && argc > 0) {
567dd7cddfSDavid du Colombier i = myfork();
573e12c5d1SDavid du Colombier if(i < 0) {
583e12c5d1SDavid du Colombier i = mywait(&status);
593e12c5d1SDavid du Colombier if(i < 0)
603e12c5d1SDavid du Colombier errorexit();
613e12c5d1SDavid du Colombier if(status)
623e12c5d1SDavid du Colombier c++;
633e12c5d1SDavid du Colombier nout--;
643e12c5d1SDavid du Colombier continue;
653e12c5d1SDavid du Colombier }
663e12c5d1SDavid du Colombier if(i == 0) {
673e12c5d1SDavid du Colombier print("%s:\n", *argv);
687dd7cddfSDavid du Colombier if(assemble(*argv))
697dd7cddfSDavid du Colombier errorexit();
707dd7cddfSDavid du Colombier exits(0);
713e12c5d1SDavid du Colombier }
723e12c5d1SDavid du Colombier nout++;
733e12c5d1SDavid du Colombier argc--;
743e12c5d1SDavid du Colombier argv++;
753e12c5d1SDavid du Colombier }
763e12c5d1SDavid du Colombier i = mywait(&status);
773e12c5d1SDavid du Colombier if(i < 0) {
783e12c5d1SDavid du Colombier if(c)
793e12c5d1SDavid du Colombier errorexit();
803e12c5d1SDavid du Colombier exits(0);
813e12c5d1SDavid du Colombier }
823e12c5d1SDavid du Colombier if(status)
833e12c5d1SDavid du Colombier c++;
843e12c5d1SDavid du Colombier nout--;
853e12c5d1SDavid du Colombier }
863e12c5d1SDavid du Colombier }
877dd7cddfSDavid du Colombier if(assemble(argv[0]))
887dd7cddfSDavid du Colombier errorexit();
897dd7cddfSDavid du Colombier exits(0);
907dd7cddfSDavid du Colombier }
913e12c5d1SDavid du Colombier
927dd7cddfSDavid du Colombier int
assemble(char * file)937dd7cddfSDavid du Colombier assemble(char *file)
947dd7cddfSDavid du Colombier {
957dd7cddfSDavid du Colombier char ofile[100], incfile[20], *p;
967dd7cddfSDavid du Colombier int i, of;
977dd7cddfSDavid du Colombier
987dd7cddfSDavid du Colombier strcpy(ofile, file);
997dd7cddfSDavid du Colombier p = utfrrune(ofile, pathchar());
1007dd7cddfSDavid du Colombier if(p) {
1013e12c5d1SDavid du Colombier include[0] = ofile;
1023e12c5d1SDavid du Colombier *p++ = 0;
1033e12c5d1SDavid du Colombier } else
1043e12c5d1SDavid du Colombier p = ofile;
1053e12c5d1SDavid du Colombier if(outfile == 0) {
1063e12c5d1SDavid du Colombier outfile = p;
1077dd7cddfSDavid du Colombier if(outfile){
1087dd7cddfSDavid du Colombier p = utfrrune(outfile, '.');
1097dd7cddfSDavid du Colombier if(p)
1103e12c5d1SDavid du Colombier if(p[1] == 's' && p[2] == 0)
1113e12c5d1SDavid du Colombier p[0] = 0;
1127dd7cddfSDavid du Colombier p = utfrune(outfile, 0);
1133e12c5d1SDavid du Colombier p[0] = '.';
1143e12c5d1SDavid du Colombier p[1] = thechar;
1153e12c5d1SDavid du Colombier p[2] = 0;
1167dd7cddfSDavid du Colombier } else
1177dd7cddfSDavid du Colombier outfile = "/dev/null";
1183e12c5d1SDavid du Colombier }
1197dd7cddfSDavid du Colombier p = getenv("INCLUDE");
1207dd7cddfSDavid du Colombier if(p) {
1217dd7cddfSDavid du Colombier setinclude(p);
1223e12c5d1SDavid du Colombier } else {
1237dd7cddfSDavid du Colombier if(systemtype(Plan9)) {
1247dd7cddfSDavid du Colombier sprint(incfile,"/%s/include", thestring);
1257dd7cddfSDavid du Colombier setinclude(strdup(incfile));
1263e12c5d1SDavid du Colombier }
1277dd7cddfSDavid du Colombier }
1287dd7cddfSDavid du Colombier
1293e12c5d1SDavid du Colombier of = mycreat(outfile, 0664);
1303e12c5d1SDavid du Colombier if(of < 0) {
1313e12c5d1SDavid du Colombier yyerror("%ca: cannot create %s", thechar, outfile);
1323e12c5d1SDavid du Colombier errorexit();
1333e12c5d1SDavid du Colombier }
1343e12c5d1SDavid du Colombier Binit(&obuf, of, OWRITE);
1353e12c5d1SDavid du Colombier
1363e12c5d1SDavid du Colombier pass = 1;
1377dd7cddfSDavid du Colombier pinit(file);
138219b2ee8SDavid du Colombier for(i=0; i<nDlist; i++)
139219b2ee8SDavid du Colombier dodefine(Dlist[i]);
1403e12c5d1SDavid du Colombier yyparse();
1413e12c5d1SDavid du Colombier if(nerrors) {
1423e12c5d1SDavid du Colombier cclean();
1437dd7cddfSDavid du Colombier return nerrors;
1443e12c5d1SDavid du Colombier }
1453e12c5d1SDavid du Colombier
1463e12c5d1SDavid du Colombier pass = 2;
1473e12c5d1SDavid du Colombier outhist();
1487dd7cddfSDavid du Colombier pinit(file);
149219b2ee8SDavid du Colombier for(i=0; i<nDlist; i++)
150219b2ee8SDavid du Colombier dodefine(Dlist[i]);
1513e12c5d1SDavid du Colombier yyparse();
1523e12c5d1SDavid du Colombier cclean();
1537dd7cddfSDavid du Colombier return nerrors;
1543e12c5d1SDavid du Colombier }
1553e12c5d1SDavid du Colombier
1563e12c5d1SDavid du Colombier struct
1573e12c5d1SDavid du Colombier {
1583e12c5d1SDavid du Colombier char *name;
1593e12c5d1SDavid du Colombier ushort type;
1603e12c5d1SDavid du Colombier ushort value;
1613e12c5d1SDavid du Colombier } itab[] =
1623e12c5d1SDavid du Colombier {
1633e12c5d1SDavid du Colombier "SP", LSP, D_AUTO,
1643e12c5d1SDavid du Colombier "SB", LSB, D_EXTERN,
1653e12c5d1SDavid du Colombier "FP", LFP, D_PARAM,
1663e12c5d1SDavid du Colombier "PC", LPC, D_BRANCH,
1673e12c5d1SDavid du Colombier
1683e12c5d1SDavid du Colombier "AL", LBREG, D_AL,
1693e12c5d1SDavid du Colombier "CL", LBREG, D_CL,
1703e12c5d1SDavid du Colombier "DL", LBREG, D_DL,
1713e12c5d1SDavid du Colombier "BL", LBREG, D_BL,
1723e12c5d1SDavid du Colombier "AH", LBREG, D_AH,
1733e12c5d1SDavid du Colombier "CH", LBREG, D_CH,
1743e12c5d1SDavid du Colombier "DH", LBREG, D_DH,
1753e12c5d1SDavid du Colombier "BH", LBREG, D_BH,
1763e12c5d1SDavid du Colombier
1773e12c5d1SDavid du Colombier "AX", LLREG, D_AX,
1783e12c5d1SDavid du Colombier "CX", LLREG, D_CX,
1793e12c5d1SDavid du Colombier "DX", LLREG, D_DX,
1803e12c5d1SDavid du Colombier "BX", LLREG, D_BX,
1813e12c5d1SDavid du Colombier /* "SP", LLREG, D_SP, */
1823e12c5d1SDavid du Colombier "BP", LLREG, D_BP,
1833e12c5d1SDavid du Colombier "SI", LLREG, D_SI,
1843e12c5d1SDavid du Colombier "DI", LLREG, D_DI,
1853e12c5d1SDavid du Colombier
1863e12c5d1SDavid du Colombier "F0", LFREG, D_F0+0,
1873e12c5d1SDavid du Colombier "F1", LFREG, D_F0+1,
1883e12c5d1SDavid du Colombier "F2", LFREG, D_F0+2,
1893e12c5d1SDavid du Colombier "F3", LFREG, D_F0+3,
1903e12c5d1SDavid du Colombier "F4", LFREG, D_F0+4,
1913e12c5d1SDavid du Colombier "F5", LFREG, D_F0+5,
1923e12c5d1SDavid du Colombier "F6", LFREG, D_F0+6,
1933e12c5d1SDavid du Colombier "F7", LFREG, D_F0+7,
1943e12c5d1SDavid du Colombier
1953e12c5d1SDavid du Colombier "CS", LSREG, D_CS,
1963e12c5d1SDavid du Colombier "SS", LSREG, D_SS,
1973e12c5d1SDavid du Colombier "DS", LSREG, D_DS,
1983e12c5d1SDavid du Colombier "ES", LSREG, D_ES,
1993e12c5d1SDavid du Colombier "FS", LSREG, D_FS,
2003e12c5d1SDavid du Colombier "GS", LSREG, D_GS,
2013e12c5d1SDavid du Colombier
2023e12c5d1SDavid du Colombier "GDTR", LBREG, D_GDTR,
2033e12c5d1SDavid du Colombier "IDTR", LBREG, D_IDTR,
2043e12c5d1SDavid du Colombier "LDTR", LBREG, D_LDTR,
2053e12c5d1SDavid du Colombier "MSW", LBREG, D_MSW,
2063e12c5d1SDavid du Colombier "TASK", LBREG, D_TASK,
2073e12c5d1SDavid du Colombier
2083e12c5d1SDavid du Colombier "CR0", LBREG, D_CR+0,
2093e12c5d1SDavid du Colombier "CR1", LBREG, D_CR+1,
2103e12c5d1SDavid du Colombier "CR2", LBREG, D_CR+2,
2113e12c5d1SDavid du Colombier "CR3", LBREG, D_CR+3,
2123e12c5d1SDavid du Colombier "CR4", LBREG, D_CR+4,
2133e12c5d1SDavid du Colombier "CR5", LBREG, D_CR+5,
2143e12c5d1SDavid du Colombier "CR6", LBREG, D_CR+6,
2153e12c5d1SDavid du Colombier "CR7", LBREG, D_CR+7,
2163e12c5d1SDavid du Colombier
2173e12c5d1SDavid du Colombier "DR0", LBREG, D_DR+0,
2183e12c5d1SDavid du Colombier "DR1", LBREG, D_DR+1,
2193e12c5d1SDavid du Colombier "DR2", LBREG, D_DR+2,
2203e12c5d1SDavid du Colombier "DR3", LBREG, D_DR+3,
2213e12c5d1SDavid du Colombier "DR4", LBREG, D_DR+4,
2223e12c5d1SDavid du Colombier "DR5", LBREG, D_DR+5,
2233e12c5d1SDavid du Colombier "DR6", LBREG, D_DR+6,
2243e12c5d1SDavid du Colombier "DR7", LBREG, D_DR+7,
2253e12c5d1SDavid du Colombier
2263e12c5d1SDavid du Colombier "TR0", LBREG, D_TR+0,
2273e12c5d1SDavid du Colombier "TR1", LBREG, D_TR+1,
2283e12c5d1SDavid du Colombier "TR2", LBREG, D_TR+2,
2293e12c5d1SDavid du Colombier "TR3", LBREG, D_TR+3,
2303e12c5d1SDavid du Colombier "TR4", LBREG, D_TR+4,
2313e12c5d1SDavid du Colombier "TR5", LBREG, D_TR+5,
2323e12c5d1SDavid du Colombier "TR6", LBREG, D_TR+6,
2333e12c5d1SDavid du Colombier "TR7", LBREG, D_TR+7,
2343e12c5d1SDavid du Colombier
2353e12c5d1SDavid du Colombier "AAA", LTYPE0, AAAA,
2363e12c5d1SDavid du Colombier "AAD", LTYPE0, AAAD,
2373e12c5d1SDavid du Colombier "AAM", LTYPE0, AAAM,
2383e12c5d1SDavid du Colombier "AAS", LTYPE0, AAAS,
2393e12c5d1SDavid du Colombier "ADCB", LTYPE3, AADCB,
2403e12c5d1SDavid du Colombier "ADCL", LTYPE3, AADCL,
2413e12c5d1SDavid du Colombier "ADCW", LTYPE3, AADCW,
2423e12c5d1SDavid du Colombier "ADDB", LTYPE3, AADDB,
2433e12c5d1SDavid du Colombier "ADDL", LTYPE3, AADDL,
2443e12c5d1SDavid du Colombier "ADDW", LTYPE3, AADDW,
2453e12c5d1SDavid du Colombier "ADJSP", LTYPE2, AADJSP,
2463e12c5d1SDavid du Colombier "ANDB", LTYPE3, AANDB,
2473e12c5d1SDavid du Colombier "ANDL", LTYPE3, AANDL,
2483e12c5d1SDavid du Colombier "ANDW", LTYPE3, AANDW,
2493e12c5d1SDavid du Colombier "ARPL", LTYPE3, AARPL,
2503e12c5d1SDavid du Colombier "BOUNDL", LTYPE3, ABOUNDL,
2513e12c5d1SDavid du Colombier "BOUNDW", LTYPE3, ABOUNDW,
2523e12c5d1SDavid du Colombier "BSFL", LTYPE3, ABSFL,
2533e12c5d1SDavid du Colombier "BSFW", LTYPE3, ABSFW,
2543e12c5d1SDavid du Colombier "BSRL", LTYPE3, ABSRL,
2553e12c5d1SDavid du Colombier "BSRW", LTYPE3, ABSRW,
2563e12c5d1SDavid du Colombier "BTCL", LTYPE3, ABTCL,
2573e12c5d1SDavid du Colombier "BTCW", LTYPE3, ABTCW,
2583e12c5d1SDavid du Colombier "BTL", LTYPE3, ABTL,
2593e12c5d1SDavid du Colombier "BTRL", LTYPE3, ABTRL,
2603e12c5d1SDavid du Colombier "BTRW", LTYPE3, ABTRW,
2613e12c5d1SDavid du Colombier "BTSL", LTYPE3, ABTSL,
2623e12c5d1SDavid du Colombier "BTSW", LTYPE3, ABTSW,
2633e12c5d1SDavid du Colombier "BTW", LTYPE3, ABTW,
2643e12c5d1SDavid du Colombier "BYTE", LTYPE2, ABYTE,
2653e12c5d1SDavid du Colombier "CALL", LTYPEC, ACALL,
2663e12c5d1SDavid du Colombier "CLC", LTYPE0, ACLC,
2673e12c5d1SDavid du Colombier "CLD", LTYPE0, ACLD,
2683e12c5d1SDavid du Colombier "CLI", LTYPE0, ACLI,
2693e12c5d1SDavid du Colombier "CLTS", LTYPE0, ACLTS,
2703e12c5d1SDavid du Colombier "CMC", LTYPE0, ACMC,
2713e12c5d1SDavid du Colombier "CMPB", LTYPE4, ACMPB,
2723e12c5d1SDavid du Colombier "CMPL", LTYPE4, ACMPL,
2733e12c5d1SDavid du Colombier "CMPW", LTYPE4, ACMPW,
2743e12c5d1SDavid du Colombier "CMPSB", LTYPE0, ACMPSB,
2753e12c5d1SDavid du Colombier "CMPSL", LTYPE0, ACMPSL,
2763e12c5d1SDavid du Colombier "CMPSW", LTYPE0, ACMPSW,
277*6520663fSDavid du Colombier "CMPXCHGB", LTYPE3, ACMPXCHGB,
278*6520663fSDavid du Colombier "CMPXCHGL", LTYPE3, ACMPXCHGL,
279*6520663fSDavid du Colombier "CMPXCHGW", LTYPE3, ACMPXCHGW,
2803e12c5d1SDavid du Colombier "DAA", LTYPE0, ADAA,
2813e12c5d1SDavid du Colombier "DAS", LTYPE0, ADAS,
2823e12c5d1SDavid du Colombier "DATA", LTYPED, ADATA,
2833e12c5d1SDavid du Colombier "DECB", LTYPE1, ADECB,
2843e12c5d1SDavid du Colombier "DECL", LTYPE1, ADECL,
2853e12c5d1SDavid du Colombier "DECW", LTYPE1, ADECW,
2863e12c5d1SDavid du Colombier "DIVB", LTYPE2, ADIVB,
2873e12c5d1SDavid du Colombier "DIVL", LTYPE2, ADIVL,
2883e12c5d1SDavid du Colombier "DIVW", LTYPE2, ADIVW,
289219b2ee8SDavid du Colombier "END", LTYPE0, AEND,
2903e12c5d1SDavid du Colombier "ENTER", LTYPE2, AENTER,
291*6520663fSDavid du Colombier "GLOBL", LTYPEG, AGLOBL,
2923e12c5d1SDavid du Colombier "HLT", LTYPE0, AHLT,
2933e12c5d1SDavid du Colombier "IDIVB", LTYPE2, AIDIVB,
2943e12c5d1SDavid du Colombier "IDIVL", LTYPE2, AIDIVL,
2953e12c5d1SDavid du Colombier "IDIVW", LTYPE2, AIDIVW,
296*6520663fSDavid du Colombier "IMULB", LTYPEI, AIMULB,
297*6520663fSDavid du Colombier "IMULL", LTYPEI, AIMULL,
298*6520663fSDavid du Colombier "IMULW", LTYPEI, AIMULW,
2993e12c5d1SDavid du Colombier "INB", LTYPE0, AINB,
3003e12c5d1SDavid du Colombier "INL", LTYPE0, AINL,
3013e12c5d1SDavid du Colombier "INW", LTYPE0, AINW,
3023e12c5d1SDavid du Colombier "INCB", LTYPE1, AINCB,
3033e12c5d1SDavid du Colombier "INCL", LTYPE1, AINCL,
3043e12c5d1SDavid du Colombier "INCW", LTYPE1, AINCW,
3053e12c5d1SDavid du Colombier "INSB", LTYPE0, AINSB,
3063e12c5d1SDavid du Colombier "INSL", LTYPE0, AINSL,
3073e12c5d1SDavid du Colombier "INSW", LTYPE0, AINSW,
3083e12c5d1SDavid du Colombier "INT", LTYPE2, AINT,
3093e12c5d1SDavid du Colombier "INTO", LTYPE0, AINTO,
3103e12c5d1SDavid du Colombier "IRETL", LTYPE0, AIRETL,
3113e12c5d1SDavid du Colombier "IRETW", LTYPE0, AIRETW,
3123e12c5d1SDavid du Colombier
3133e12c5d1SDavid du Colombier "JOS", LTYPER, AJOS,
3143e12c5d1SDavid du Colombier "JO", LTYPER, AJOS, /* alternate */
3153e12c5d1SDavid du Colombier "JOC", LTYPER, AJOC,
3163e12c5d1SDavid du Colombier "JNO", LTYPER, AJOC, /* alternate */
3173e12c5d1SDavid du Colombier "JCS", LTYPER, AJCS,
3183e12c5d1SDavid du Colombier "JB", LTYPER, AJCS, /* alternate */
3193e12c5d1SDavid du Colombier "JC", LTYPER, AJCS, /* alternate */
3203e12c5d1SDavid du Colombier "JNAE", LTYPER, AJCS, /* alternate */
3213e12c5d1SDavid du Colombier "JLO", LTYPER, AJCS, /* alternate */
3223e12c5d1SDavid du Colombier "JCC", LTYPER, AJCC,
3233e12c5d1SDavid du Colombier "JAE", LTYPER, AJCC, /* alternate */
3243e12c5d1SDavid du Colombier "JNB", LTYPER, AJCC, /* alternate */
3253e12c5d1SDavid du Colombier "JNC", LTYPER, AJCC, /* alternate */
3263e12c5d1SDavid du Colombier "JHS", LTYPER, AJCC, /* alternate */
3273e12c5d1SDavid du Colombier "JEQ", LTYPER, AJEQ,
3283e12c5d1SDavid du Colombier "JE", LTYPER, AJEQ, /* alternate */
3293e12c5d1SDavid du Colombier "JZ", LTYPER, AJEQ, /* alternate */
3303e12c5d1SDavid du Colombier "JNE", LTYPER, AJNE,
3313e12c5d1SDavid du Colombier "JNZ", LTYPER, AJNE, /* alternate */
3323e12c5d1SDavid du Colombier "JLS", LTYPER, AJLS,
3333e12c5d1SDavid du Colombier "JBE", LTYPER, AJLS, /* alternate */
3343e12c5d1SDavid du Colombier "JNA", LTYPER, AJLS, /* alternate */
3353e12c5d1SDavid du Colombier "JHI", LTYPER, AJHI,
3363e12c5d1SDavid du Colombier "JA", LTYPER, AJHI, /* alternate */
3373e12c5d1SDavid du Colombier "JNBE", LTYPER, AJHI, /* alternate */
3383e12c5d1SDavid du Colombier "JMI", LTYPER, AJMI,
3393e12c5d1SDavid du Colombier "JS", LTYPER, AJMI, /* alternate */
3403e12c5d1SDavid du Colombier "JPL", LTYPER, AJPL,
3413e12c5d1SDavid du Colombier "JNS", LTYPER, AJPL, /* alternate */
3423e12c5d1SDavid du Colombier "JPS", LTYPER, AJPS,
3433e12c5d1SDavid du Colombier "JP", LTYPER, AJPS, /* alternate */
3443e12c5d1SDavid du Colombier "JPE", LTYPER, AJPS, /* alternate */
3453e12c5d1SDavid du Colombier "JPC", LTYPER, AJPC,
3463e12c5d1SDavid du Colombier "JNP", LTYPER, AJPC, /* alternate */
3473e12c5d1SDavid du Colombier "JPO", LTYPER, AJPC, /* alternate */
3483e12c5d1SDavid du Colombier "JLT", LTYPER, AJLT,
3493e12c5d1SDavid du Colombier "JL", LTYPER, AJLT, /* alternate */
3503e12c5d1SDavid du Colombier "JNGE", LTYPER, AJLT, /* alternate */
3513e12c5d1SDavid du Colombier "JGE", LTYPER, AJGE,
3523e12c5d1SDavid du Colombier "JNL", LTYPER, AJGE, /* alternate */
3533e12c5d1SDavid du Colombier "JLE", LTYPER, AJLE,
3543e12c5d1SDavid du Colombier "JNG", LTYPER, AJLE, /* alternate */
3553e12c5d1SDavid du Colombier "JGT", LTYPER, AJGT,
3563e12c5d1SDavid du Colombier "JG", LTYPER, AJGT, /* alternate */
3573e12c5d1SDavid du Colombier "JNLE", LTYPER, AJGT, /* alternate */
3583e12c5d1SDavid du Colombier
3593e12c5d1SDavid du Colombier "JCXZ", LTYPER, AJCXZ,
3603e12c5d1SDavid du Colombier "JMP", LTYPEC, AJMP,
3613e12c5d1SDavid du Colombier "LAHF", LTYPE0, ALAHF,
3623e12c5d1SDavid du Colombier "LARL", LTYPE3, ALARL,
3633e12c5d1SDavid du Colombier "LARW", LTYPE3, ALARW,
3643e12c5d1SDavid du Colombier "LEAL", LTYPE3, ALEAL,
3653e12c5d1SDavid du Colombier "LEAW", LTYPE3, ALEAW,
3663e12c5d1SDavid du Colombier "LEAVEL", LTYPE0, ALEAVEL,
3673e12c5d1SDavid du Colombier "LEAVEW", LTYPE0, ALEAVEW,
3683e12c5d1SDavid du Colombier "LOCK", LTYPE0, ALOCK,
369219b2ee8SDavid du Colombier "LODSB", LTYPE0, ALODSB,
370219b2ee8SDavid du Colombier "LODSL", LTYPE0, ALODSL,
371219b2ee8SDavid du Colombier "LODSW", LTYPE0, ALODSW,
3723e12c5d1SDavid du Colombier "LONG", LTYPE2, ALONG,
3733e12c5d1SDavid du Colombier "LOOP", LTYPER, ALOOP,
3743e12c5d1SDavid du Colombier "LOOPEQ", LTYPER, ALOOPEQ,
3753e12c5d1SDavid du Colombier "LOOPNE", LTYPER, ALOOPNE,
3763e12c5d1SDavid du Colombier "LSLL", LTYPE3, ALSLL,
3773e12c5d1SDavid du Colombier "LSLW", LTYPE3, ALSLW,
3783e12c5d1SDavid du Colombier "MOVB", LTYPE3, AMOVB,
3793e12c5d1SDavid du Colombier "MOVL", LTYPEM, AMOVL,
3803e12c5d1SDavid du Colombier "MOVW", LTYPEM, AMOVW,
3813e12c5d1SDavid du Colombier "MOVBLSX", LTYPE3, AMOVBLSX,
3823e12c5d1SDavid du Colombier "MOVBLZX", LTYPE3, AMOVBLZX,
3833e12c5d1SDavid du Colombier "MOVBWSX", LTYPE3, AMOVBWSX,
3843e12c5d1SDavid du Colombier "MOVBWZX", LTYPE3, AMOVBWZX,
3853e12c5d1SDavid du Colombier "MOVWLSX", LTYPE3, AMOVWLSX,
3863e12c5d1SDavid du Colombier "MOVWLZX", LTYPE3, AMOVWLZX,
3873e12c5d1SDavid du Colombier "MOVSB", LTYPE0, AMOVSB,
3883e12c5d1SDavid du Colombier "MOVSL", LTYPE0, AMOVSL,
3893e12c5d1SDavid du Colombier "MOVSW", LTYPE0, AMOVSW,
3903e12c5d1SDavid du Colombier "MULB", LTYPE2, AMULB,
3913e12c5d1SDavid du Colombier "MULL", LTYPE2, AMULL,
3923e12c5d1SDavid du Colombier "MULW", LTYPE2, AMULW,
3933e12c5d1SDavid du Colombier "NEGB", LTYPE1, ANEGB,
3943e12c5d1SDavid du Colombier "NEGL", LTYPE1, ANEGL,
3953e12c5d1SDavid du Colombier "NEGW", LTYPE1, ANEGW,
3963e12c5d1SDavid du Colombier "NOP", LTYPEN, ANOP,
3973e12c5d1SDavid du Colombier "NOTB", LTYPE1, ANOTB,
3983e12c5d1SDavid du Colombier "NOTL", LTYPE1, ANOTL,
3993e12c5d1SDavid du Colombier "NOTW", LTYPE1, ANOTW,
4003e12c5d1SDavid du Colombier "ORB", LTYPE3, AORB,
4013e12c5d1SDavid du Colombier "ORL", LTYPE3, AORL,
4023e12c5d1SDavid du Colombier "ORW", LTYPE3, AORW,
4033e12c5d1SDavid du Colombier "OUTB", LTYPE0, AOUTB,
4043e12c5d1SDavid du Colombier "OUTL", LTYPE0, AOUTL,
4053e12c5d1SDavid du Colombier "OUTW", LTYPE0, AOUTW,
4063e12c5d1SDavid du Colombier "OUTSB", LTYPE0, AOUTSB,
4073e12c5d1SDavid du Colombier "OUTSL", LTYPE0, AOUTSL,
4083e12c5d1SDavid du Colombier "OUTSW", LTYPE0, AOUTSW,
4093e12c5d1SDavid du Colombier "POPAL", LTYPE0, APOPAL,
4103e12c5d1SDavid du Colombier "POPAW", LTYPE0, APOPAW,
4113e12c5d1SDavid du Colombier "POPFL", LTYPE0, APOPFL,
4123e12c5d1SDavid du Colombier "POPFW", LTYPE0, APOPFW,
4133e12c5d1SDavid du Colombier "POPL", LTYPE1, APOPL,
4143e12c5d1SDavid du Colombier "POPW", LTYPE1, APOPW,
4153e12c5d1SDavid du Colombier "PUSHAL", LTYPE0, APUSHAL,
4163e12c5d1SDavid du Colombier "PUSHAW", LTYPE0, APUSHAW,
4173e12c5d1SDavid du Colombier "PUSHFL", LTYPE0, APUSHFL,
4183e12c5d1SDavid du Colombier "PUSHFW", LTYPE0, APUSHFW,
4193e12c5d1SDavid du Colombier "PUSHL", LTYPE2, APUSHL,
4203e12c5d1SDavid du Colombier "PUSHW", LTYPE2, APUSHW,
4213e12c5d1SDavid du Colombier "RCLB", LTYPE3, ARCLB,
4223e12c5d1SDavid du Colombier "RCLL", LTYPE3, ARCLL,
4233e12c5d1SDavid du Colombier "RCLW", LTYPE3, ARCLW,
4243e12c5d1SDavid du Colombier "RCRB", LTYPE3, ARCRB,
4253e12c5d1SDavid du Colombier "RCRL", LTYPE3, ARCRL,
4263e12c5d1SDavid du Colombier "RCRW", LTYPE3, ARCRW,
4273e12c5d1SDavid du Colombier "REP", LTYPE0, AREP,
4283e12c5d1SDavid du Colombier "REPN", LTYPE0, AREPN,
4293e12c5d1SDavid du Colombier "RET", LTYPE0, ARET,
4303e12c5d1SDavid du Colombier "ROLB", LTYPE3, AROLB,
4313e12c5d1SDavid du Colombier "ROLL", LTYPE3, AROLL,
4323e12c5d1SDavid du Colombier "ROLW", LTYPE3, AROLW,
4333e12c5d1SDavid du Colombier "RORB", LTYPE3, ARORB,
4343e12c5d1SDavid du Colombier "RORL", LTYPE3, ARORL,
4353e12c5d1SDavid du Colombier "RORW", LTYPE3, ARORW,
4363e12c5d1SDavid du Colombier "SAHF", LTYPE0, ASAHF,
4373e12c5d1SDavid du Colombier "SALB", LTYPE3, ASALB,
4383e12c5d1SDavid du Colombier "SALL", LTYPE3, ASALL,
4393e12c5d1SDavid du Colombier "SALW", LTYPE3, ASALW,
4403e12c5d1SDavid du Colombier "SARB", LTYPE3, ASARB,
4413e12c5d1SDavid du Colombier "SARL", LTYPE3, ASARL,
4423e12c5d1SDavid du Colombier "SARW", LTYPE3, ASARW,
4433e12c5d1SDavid du Colombier "SBBB", LTYPE3, ASBBB,
4443e12c5d1SDavid du Colombier "SBBL", LTYPE3, ASBBL,
4453e12c5d1SDavid du Colombier "SBBW", LTYPE3, ASBBW,
4463e12c5d1SDavid du Colombier "SCASB", LTYPE0, ASCASB,
4473e12c5d1SDavid du Colombier "SCASL", LTYPE0, ASCASL,
4483e12c5d1SDavid du Colombier "SCASW", LTYPE0, ASCASW,
4493e12c5d1SDavid du Colombier "SETCC", LTYPE1, ASETCC,
4503e12c5d1SDavid du Colombier "SETCS", LTYPE1, ASETCS,
4513e12c5d1SDavid du Colombier "SETEQ", LTYPE1, ASETEQ,
4523e12c5d1SDavid du Colombier "SETGE", LTYPE1, ASETGE,
4533e12c5d1SDavid du Colombier "SETGT", LTYPE1, ASETGT,
4543e12c5d1SDavid du Colombier "SETHI", LTYPE1, ASETHI,
4553e12c5d1SDavid du Colombier "SETLE", LTYPE1, ASETLE,
4563e12c5d1SDavid du Colombier "SETLS", LTYPE1, ASETLS,
4573e12c5d1SDavid du Colombier "SETLT", LTYPE1, ASETLT,
4583e12c5d1SDavid du Colombier "SETMI", LTYPE1, ASETMI,
4593e12c5d1SDavid du Colombier "SETNE", LTYPE1, ASETNE,
4603e12c5d1SDavid du Colombier "SETOC", LTYPE1, ASETOC,
4613e12c5d1SDavid du Colombier "SETOS", LTYPE1, ASETOS,
4623e12c5d1SDavid du Colombier "SETPC", LTYPE1, ASETPC,
4633e12c5d1SDavid du Colombier "SETPL", LTYPE1, ASETPL,
4643e12c5d1SDavid du Colombier "SETPS", LTYPE1, ASETPS,
4653e12c5d1SDavid du Colombier "CDQ", LTYPE0, ACDQ,
4663e12c5d1SDavid du Colombier "CWD", LTYPE0, ACWD,
4673e12c5d1SDavid du Colombier "SHLB", LTYPE3, ASHLB,
4683e12c5d1SDavid du Colombier "SHLL", LTYPES, ASHLL,
4693e12c5d1SDavid du Colombier "SHLW", LTYPES, ASHLW,
4703e12c5d1SDavid du Colombier "SHRB", LTYPE3, ASHRB,
4713e12c5d1SDavid du Colombier "SHRL", LTYPES, ASHRL,
4723e12c5d1SDavid du Colombier "SHRW", LTYPES, ASHRW,
4733e12c5d1SDavid du Colombier "STC", LTYPE0, ASTC,
4743e12c5d1SDavid du Colombier "STD", LTYPE0, ASTD,
4753e12c5d1SDavid du Colombier "STI", LTYPE0, ASTI,
4763e12c5d1SDavid du Colombier "STOSB", LTYPE0, ASTOSB,
4773e12c5d1SDavid du Colombier "STOSL", LTYPE0, ASTOSL,
4783e12c5d1SDavid du Colombier "STOSW", LTYPE0, ASTOSW,
4793e12c5d1SDavid du Colombier "SUBB", LTYPE3, ASUBB,
4803e12c5d1SDavid du Colombier "SUBL", LTYPE3, ASUBL,
4813e12c5d1SDavid du Colombier "SUBW", LTYPE3, ASUBW,
4823e12c5d1SDavid du Colombier "SYSCALL", LTYPE0, ASYSCALL,
4833e12c5d1SDavid du Colombier "TESTB", LTYPE3, ATESTB,
4843e12c5d1SDavid du Colombier "TESTL", LTYPE3, ATESTL,
4853e12c5d1SDavid du Colombier "TESTW", LTYPE3, ATESTW,
4863e12c5d1SDavid du Colombier "TEXT", LTYPET, ATEXT,
4873e12c5d1SDavid du Colombier "VERR", LTYPE2, AVERR,
4883e12c5d1SDavid du Colombier "VERW", LTYPE2, AVERW,
4893e12c5d1SDavid du Colombier "WAIT", LTYPE0, AWAIT,
4903e12c5d1SDavid du Colombier "WORD", LTYPE2, AWORD,
4913e12c5d1SDavid du Colombier "XCHGB", LTYPE3, AXCHGB,
4923e12c5d1SDavid du Colombier "XCHGL", LTYPE3, AXCHGL,
4933e12c5d1SDavid du Colombier "XCHGW", LTYPE3, AXCHGW,
4943e12c5d1SDavid du Colombier "XLAT", LTYPE2, AXLAT,
4953e12c5d1SDavid du Colombier "XORB", LTYPE3, AXORB,
4963e12c5d1SDavid du Colombier "XORL", LTYPE3, AXORL,
4973e12c5d1SDavid du Colombier "XORW", LTYPE3, AXORW,
4983e12c5d1SDavid du Colombier
499*6520663fSDavid du Colombier "CMOVLCC", LTYPE3, ACMOVLCC,
500*6520663fSDavid du Colombier "CMOVLCS", LTYPE3, ACMOVLCS,
501*6520663fSDavid du Colombier "CMOVLEQ", LTYPE3, ACMOVLEQ,
502*6520663fSDavid du Colombier "CMOVLGE", LTYPE3, ACMOVLGE,
503*6520663fSDavid du Colombier "CMOVLGT", LTYPE3, ACMOVLGT,
504*6520663fSDavid du Colombier "CMOVLHI", LTYPE3, ACMOVLHI,
505*6520663fSDavid du Colombier "CMOVLLE", LTYPE3, ACMOVLLE,
506*6520663fSDavid du Colombier "CMOVLLS", LTYPE3, ACMOVLLS,
507*6520663fSDavid du Colombier "CMOVLLT", LTYPE3, ACMOVLLT,
508*6520663fSDavid du Colombier "CMOVLMI", LTYPE3, ACMOVLMI,
509*6520663fSDavid du Colombier "CMOVLNE", LTYPE3, ACMOVLNE,
510*6520663fSDavid du Colombier "CMOVLOC", LTYPE3, ACMOVLOC,
511*6520663fSDavid du Colombier "CMOVLOS", LTYPE3, ACMOVLOS,
512*6520663fSDavid du Colombier "CMOVLPC", LTYPE3, ACMOVLPC,
513*6520663fSDavid du Colombier "CMOVLPL", LTYPE3, ACMOVLPL,
514*6520663fSDavid du Colombier "CMOVLPS", LTYPE3, ACMOVLPS,
515*6520663fSDavid du Colombier "CMOVWCC", LTYPE3, ACMOVWCC,
516*6520663fSDavid du Colombier "CMOVWCS", LTYPE3, ACMOVWCS,
517*6520663fSDavid du Colombier "CMOVWEQ", LTYPE3, ACMOVWEQ,
518*6520663fSDavid du Colombier "CMOVWGE", LTYPE3, ACMOVWGE,
519*6520663fSDavid du Colombier "CMOVWGT", LTYPE3, ACMOVWGT,
520*6520663fSDavid du Colombier "CMOVWHI", LTYPE3, ACMOVWHI,
521*6520663fSDavid du Colombier "CMOVWLE", LTYPE3, ACMOVWLE,
522*6520663fSDavid du Colombier "CMOVWLS", LTYPE3, ACMOVWLS,
523*6520663fSDavid du Colombier "CMOVWLT", LTYPE3, ACMOVWLT,
524*6520663fSDavid du Colombier "CMOVWMI", LTYPE3, ACMOVWMI,
525*6520663fSDavid du Colombier "CMOVWNE", LTYPE3, ACMOVWNE,
526*6520663fSDavid du Colombier "CMOVWOC", LTYPE3, ACMOVWOC,
527*6520663fSDavid du Colombier "CMOVWOS", LTYPE3, ACMOVWOS,
528*6520663fSDavid du Colombier "CMOVWPC", LTYPE3, ACMOVWPC,
529*6520663fSDavid du Colombier "CMOVWPL", LTYPE3, ACMOVWPL,
530*6520663fSDavid du Colombier "CMOVWPS", LTYPE3, ACMOVWPS,
531*6520663fSDavid du Colombier
5323e12c5d1SDavid du Colombier "FMOVB", LTYPE3, AFMOVB,
5333e12c5d1SDavid du Colombier "FMOVBP", LTYPE3, AFMOVBP,
5343e12c5d1SDavid du Colombier "FMOVD", LTYPE3, AFMOVD,
5353e12c5d1SDavid du Colombier "FMOVDP", LTYPE3, AFMOVDP,
5363e12c5d1SDavid du Colombier "FMOVF", LTYPE3, AFMOVF,
5373e12c5d1SDavid du Colombier "FMOVFP", LTYPE3, AFMOVFP,
5383e12c5d1SDavid du Colombier "FMOVL", LTYPE3, AFMOVL,
5393e12c5d1SDavid du Colombier "FMOVLP", LTYPE3, AFMOVLP,
5403e12c5d1SDavid du Colombier "FMOVV", LTYPE3, AFMOVV,
5413e12c5d1SDavid du Colombier "FMOVVP", LTYPE3, AFMOVVP,
5423e12c5d1SDavid du Colombier "FMOVW", LTYPE3, AFMOVW,
5433e12c5d1SDavid du Colombier "FMOVWP", LTYPE3, AFMOVWP,
5443e12c5d1SDavid du Colombier "FMOVX", LTYPE3, AFMOVX,
5453e12c5d1SDavid du Colombier "FMOVXP", LTYPE3, AFMOVXP,
546*6520663fSDavid du Colombier "FCMOVCC", LTYPE3, AFCMOVCC,
547*6520663fSDavid du Colombier "FCMOVCS", LTYPE3, AFCMOVCS,
548*6520663fSDavid du Colombier "FCMOVEQ", LTYPE3, AFCMOVEQ,
549*6520663fSDavid du Colombier "FCMOVHI", LTYPE3, AFCMOVHI,
550*6520663fSDavid du Colombier "FCMOVLS", LTYPE3, AFCMOVLS,
551*6520663fSDavid du Colombier "FCMOVNE", LTYPE3, AFCMOVNE,
552*6520663fSDavid du Colombier "FCMOVNU", LTYPE3, AFCMOVNU,
553*6520663fSDavid du Colombier "FCMOVUN", LTYPE3, AFCMOVUN,
5543e12c5d1SDavid du Colombier "FCOMB", LTYPE3, AFCOMB,
5553e12c5d1SDavid du Colombier "FCOMBP", LTYPE3, AFCOMBP,
5563e12c5d1SDavid du Colombier "FCOMD", LTYPE3, AFCOMD,
5573e12c5d1SDavid du Colombier "FCOMDP", LTYPE3, AFCOMDP,
5583e12c5d1SDavid du Colombier "FCOMDPP", LTYPE3, AFCOMDPP,
5593e12c5d1SDavid du Colombier "FCOMF", LTYPE3, AFCOMF,
5603e12c5d1SDavid du Colombier "FCOMFP", LTYPE3, AFCOMFP,
561*6520663fSDavid du Colombier "FCOMI", LTYPE3, AFCOMI,
562*6520663fSDavid du Colombier "FCOMIP", LTYPE3, AFCOMIP,
5633e12c5d1SDavid du Colombier "FCOML", LTYPE3, AFCOML,
5643e12c5d1SDavid du Colombier "FCOMLP", LTYPE3, AFCOMLP,
5653e12c5d1SDavid du Colombier "FCOMW", LTYPE3, AFCOMW,
5663e12c5d1SDavid du Colombier "FCOMWP", LTYPE3, AFCOMWP,
5673e12c5d1SDavid du Colombier "FUCOM", LTYPE3, AFUCOM,
568*6520663fSDavid du Colombier "FUCOMI", LTYPE3, AFUCOMI,
569*6520663fSDavid du Colombier "FUCOMIP", LTYPE3, AFUCOMIP,
5703e12c5d1SDavid du Colombier "FUCOMP", LTYPE3, AFUCOMP,
5713e12c5d1SDavid du Colombier "FUCOMPP", LTYPE3, AFUCOMPP,
5723e12c5d1SDavid du Colombier "FADDW", LTYPE3, AFADDW,
5733e12c5d1SDavid du Colombier "FADDL", LTYPE3, AFADDL,
5743e12c5d1SDavid du Colombier "FADDF", LTYPE3, AFADDF,
5753e12c5d1SDavid du Colombier "FADDD", LTYPE3, AFADDD,
5763e12c5d1SDavid du Colombier "FADDDP", LTYPE3, AFADDDP,
5773e12c5d1SDavid du Colombier "FSUBDP", LTYPE3, AFSUBDP,
5783e12c5d1SDavid du Colombier "FSUBW", LTYPE3, AFSUBW,
5793e12c5d1SDavid du Colombier "FSUBL", LTYPE3, AFSUBL,
5803e12c5d1SDavid du Colombier "FSUBF", LTYPE3, AFSUBF,
5813e12c5d1SDavid du Colombier "FSUBD", LTYPE3, AFSUBD,
5823e12c5d1SDavid du Colombier "FSUBRDP", LTYPE3, AFSUBRDP,
5833e12c5d1SDavid du Colombier "FSUBRW", LTYPE3, AFSUBRW,
5843e12c5d1SDavid du Colombier "FSUBRL", LTYPE3, AFSUBRL,
5853e12c5d1SDavid du Colombier "FSUBRF", LTYPE3, AFSUBRF,
5863e12c5d1SDavid du Colombier "FSUBRD", LTYPE3, AFSUBRD,
5873e12c5d1SDavid du Colombier "FMULDP", LTYPE3, AFMULDP,
5883e12c5d1SDavid du Colombier "FMULW", LTYPE3, AFMULW,
5893e12c5d1SDavid du Colombier "FMULL", LTYPE3, AFMULL,
5903e12c5d1SDavid du Colombier "FMULF", LTYPE3, AFMULF,
5913e12c5d1SDavid du Colombier "FMULD", LTYPE3, AFMULD,
5923e12c5d1SDavid du Colombier "FDIVDP", LTYPE3, AFDIVDP,
5933e12c5d1SDavid du Colombier "FDIVW", LTYPE3, AFDIVW,
5943e12c5d1SDavid du Colombier "FDIVL", LTYPE3, AFDIVL,
5953e12c5d1SDavid du Colombier "FDIVF", LTYPE3, AFDIVF,
5963e12c5d1SDavid du Colombier "FDIVD", LTYPE3, AFDIVD,
5973e12c5d1SDavid du Colombier "FDIVRDP", LTYPE3, AFDIVRDP,
5983e12c5d1SDavid du Colombier "FDIVRW", LTYPE3, AFDIVRW,
5993e12c5d1SDavid du Colombier "FDIVRL", LTYPE3, AFDIVRL,
6003e12c5d1SDavid du Colombier "FDIVRF", LTYPE3, AFDIVRF,
6013e12c5d1SDavid du Colombier "FDIVRD", LTYPE3, AFDIVRD,
6023e12c5d1SDavid du Colombier "FXCHD", LTYPE3, AFXCHD,
6033e12c5d1SDavid du Colombier "FFREE", LTYPE1, AFFREE,
6043e12c5d1SDavid du Colombier "FLDCW", LTYPE2, AFLDCW,
6053e12c5d1SDavid du Colombier "FLDENV", LTYPE1, AFLDENV,
6063e12c5d1SDavid du Colombier "FRSTOR", LTYPE2, AFRSTOR,
6073e12c5d1SDavid du Colombier "FSAVE", LTYPE1, AFSAVE,
6083e12c5d1SDavid du Colombier "FSTCW", LTYPE1, AFSTCW,
6093e12c5d1SDavid du Colombier "FSTENV", LTYPE1, AFSTENV,
6103e12c5d1SDavid du Colombier "FSTSW", LTYPE1, AFSTSW,
6113e12c5d1SDavid du Colombier "F2XM1", LTYPE0, AF2XM1,
6123e12c5d1SDavid du Colombier "FABS", LTYPE0, AFABS,
6133e12c5d1SDavid du Colombier "FCHS", LTYPE0, AFCHS,
6143e12c5d1SDavid du Colombier "FCLEX", LTYPE0, AFCLEX,
6153e12c5d1SDavid du Colombier "FCOS", LTYPE0, AFCOS,
6163e12c5d1SDavid du Colombier "FDECSTP", LTYPE0, AFDECSTP,
6173e12c5d1SDavid du Colombier "FINCSTP", LTYPE0, AFINCSTP,
6183e12c5d1SDavid du Colombier "FINIT", LTYPE0, AFINIT,
6193e12c5d1SDavid du Colombier "FLD1", LTYPE0, AFLD1,
6203e12c5d1SDavid du Colombier "FLDL2E", LTYPE0, AFLDL2E,
6213e12c5d1SDavid du Colombier "FLDL2T", LTYPE0, AFLDL2T,
6223e12c5d1SDavid du Colombier "FLDLG2", LTYPE0, AFLDLG2,
6233e12c5d1SDavid du Colombier "FLDLN2", LTYPE0, AFLDLN2,
6243e12c5d1SDavid du Colombier "FLDPI", LTYPE0, AFLDPI,
6253e12c5d1SDavid du Colombier "FLDZ", LTYPE0, AFLDZ,
6263e12c5d1SDavid du Colombier "FNOP", LTYPE0, AFNOP,
6273e12c5d1SDavid du Colombier "FPATAN", LTYPE0, AFPATAN,
6283e12c5d1SDavid du Colombier "FPREM", LTYPE0, AFPREM,
6293e12c5d1SDavid du Colombier "FPREM1", LTYPE0, AFPREM1,
6303e12c5d1SDavid du Colombier "FPTAN", LTYPE0, AFPTAN,
6313e12c5d1SDavid du Colombier "FRNDINT", LTYPE0, AFRNDINT,
6323e12c5d1SDavid du Colombier "FSCALE", LTYPE0, AFSCALE,
6333e12c5d1SDavid du Colombier "FSIN", LTYPE0, AFSIN,
6343e12c5d1SDavid du Colombier "FSINCOS", LTYPE0, AFSINCOS,
6353e12c5d1SDavid du Colombier "FSQRT", LTYPE0, AFSQRT,
6363e12c5d1SDavid du Colombier "FTST", LTYPE0, AFTST,
6373e12c5d1SDavid du Colombier "FXAM", LTYPE0, AFXAM,
6383e12c5d1SDavid du Colombier "FXTRACT", LTYPE0, AFXTRACT,
6393e12c5d1SDavid du Colombier "FYL2X", LTYPE0, AFYL2X,
6403e12c5d1SDavid du Colombier "FYL2XP1", LTYPE0, AFYL2XP1,
6413e12c5d1SDavid du Colombier
6423e12c5d1SDavid du Colombier 0
6433e12c5d1SDavid du Colombier };
6443e12c5d1SDavid du Colombier
6453e12c5d1SDavid du Colombier void
cinit(void)6463e12c5d1SDavid du Colombier cinit(void)
6473e12c5d1SDavid du Colombier {
6483e12c5d1SDavid du Colombier Sym *s;
6493e12c5d1SDavid du Colombier int i;
6503e12c5d1SDavid du Colombier
6513e12c5d1SDavid du Colombier nullgen.sym = S;
6523e12c5d1SDavid du Colombier nullgen.offset = 0;
6533e12c5d1SDavid du Colombier if(FPCHIP)
6543e12c5d1SDavid du Colombier nullgen.dval = 0;
6553e12c5d1SDavid du Colombier for(i=0; i<sizeof(nullgen.sval); i++)
6563e12c5d1SDavid du Colombier nullgen.sval[i] = 0;
6573e12c5d1SDavid du Colombier nullgen.type = D_NONE;
6583e12c5d1SDavid du Colombier nullgen.index = D_NONE;
6593e12c5d1SDavid du Colombier nullgen.scale = 0;
6603e12c5d1SDavid du Colombier
6613e12c5d1SDavid du Colombier nerrors = 0;
6623e12c5d1SDavid du Colombier iostack = I;
6633e12c5d1SDavid du Colombier iofree = I;
6643e12c5d1SDavid du Colombier peekc = IGN;
6653e12c5d1SDavid du Colombier nhunk = 0;
6663e12c5d1SDavid du Colombier for(i=0; i<NHASH; i++)
6673e12c5d1SDavid du Colombier hash[i] = S;
6683e12c5d1SDavid du Colombier for(i=0; itab[i].name; i++) {
6693e12c5d1SDavid du Colombier s = slookup(itab[i].name);
6703e12c5d1SDavid du Colombier if(s->type != LNAME)
6713e12c5d1SDavid du Colombier yyerror("double initialization %s", itab[i].name);
6723e12c5d1SDavid du Colombier s->type = itab[i].type;
6733e12c5d1SDavid du Colombier s->value = itab[i].value;
6743e12c5d1SDavid du Colombier }
675219b2ee8SDavid du Colombier
6767dd7cddfSDavid du Colombier pathname = allocn(pathname, 0, 100);
6777dd7cddfSDavid du Colombier if(mygetwd(pathname, 99) == 0) {
6787dd7cddfSDavid du Colombier pathname = allocn(pathname, 100, 900);
6797dd7cddfSDavid du Colombier if(mygetwd(pathname, 999) == 0)
680219b2ee8SDavid du Colombier strcpy(pathname, "/???");
681219b2ee8SDavid du Colombier }
6823e12c5d1SDavid du Colombier }
6833e12c5d1SDavid du Colombier
6843e12c5d1SDavid du Colombier void
checkscale(int scale)6853e12c5d1SDavid du Colombier checkscale(int scale)
6863e12c5d1SDavid du Colombier {
6873e12c5d1SDavid du Colombier
6883e12c5d1SDavid du Colombier switch(scale) {
6893e12c5d1SDavid du Colombier case 1:
6903e12c5d1SDavid du Colombier case 2:
6913e12c5d1SDavid du Colombier case 4:
6923e12c5d1SDavid du Colombier case 8:
6933e12c5d1SDavid du Colombier return;
6943e12c5d1SDavid du Colombier }
6953e12c5d1SDavid du Colombier yyerror("scale must be 1248: %d", scale);
6963e12c5d1SDavid du Colombier }
6973e12c5d1SDavid du Colombier
6983e12c5d1SDavid du Colombier void
syminit(Sym * s)6993e12c5d1SDavid du Colombier syminit(Sym *s)
7003e12c5d1SDavid du Colombier {
7013e12c5d1SDavid du Colombier
7023e12c5d1SDavid du Colombier s->type = LNAME;
7033e12c5d1SDavid du Colombier s->value = 0;
7043e12c5d1SDavid du Colombier }
7053e12c5d1SDavid du Colombier
7063e12c5d1SDavid du Colombier void
cclean(void)7073e12c5d1SDavid du Colombier cclean(void)
7083e12c5d1SDavid du Colombier {
7093e12c5d1SDavid du Colombier Gen2 g2;
7103e12c5d1SDavid du Colombier
7113e12c5d1SDavid du Colombier g2.from = nullgen;
7123e12c5d1SDavid du Colombier g2.to = nullgen;
7133e12c5d1SDavid du Colombier outcode(AEND, &g2);
7143e12c5d1SDavid du Colombier Bflush(&obuf);
7153e12c5d1SDavid du Colombier }
7163e12c5d1SDavid du Colombier
7173e12c5d1SDavid du Colombier void
zname(char * n,int t,int s)7183e12c5d1SDavid du Colombier zname(char *n, int t, int s)
7193e12c5d1SDavid du Colombier {
7203e12c5d1SDavid du Colombier
72180ee5cbfSDavid du Colombier Bputc(&obuf, ANAME); /* as(2) */
72280ee5cbfSDavid du Colombier Bputc(&obuf, ANAME>>8);
7233e12c5d1SDavid du Colombier Bputc(&obuf, t); /* type */
7243e12c5d1SDavid du Colombier Bputc(&obuf, s); /* sym */
7253e12c5d1SDavid du Colombier while(*n) {
7263e12c5d1SDavid du Colombier Bputc(&obuf, *n);
7273e12c5d1SDavid du Colombier n++;
7283e12c5d1SDavid du Colombier }
7293e12c5d1SDavid du Colombier Bputc(&obuf, 0);
7303e12c5d1SDavid du Colombier }
7313e12c5d1SDavid du Colombier
7323e12c5d1SDavid du Colombier void
zaddr(Gen * a,int s)7333e12c5d1SDavid du Colombier zaddr(Gen *a, int s)
7343e12c5d1SDavid du Colombier {
7353e12c5d1SDavid du Colombier long l;
7363e12c5d1SDavid du Colombier int i, t;
7373e12c5d1SDavid du Colombier char *n;
7383e12c5d1SDavid du Colombier Ieee e;
7393e12c5d1SDavid du Colombier
7403e12c5d1SDavid du Colombier t = 0;
7413e12c5d1SDavid du Colombier if(a->index != D_NONE || a->scale != 0)
7423e12c5d1SDavid du Colombier t |= T_INDEX;
7433e12c5d1SDavid du Colombier if(a->offset != 0)
7443e12c5d1SDavid du Colombier t |= T_OFFSET;
7453e12c5d1SDavid du Colombier if(s != 0)
7463e12c5d1SDavid du Colombier t |= T_SYM;
7473e12c5d1SDavid du Colombier
7483e12c5d1SDavid du Colombier switch(a->type) {
7493e12c5d1SDavid du Colombier default:
7503e12c5d1SDavid du Colombier t |= T_TYPE;
7513e12c5d1SDavid du Colombier break;
7523e12c5d1SDavid du Colombier case D_FCONST:
7533e12c5d1SDavid du Colombier t |= T_FCONST;
7543e12c5d1SDavid du Colombier break;
755*6520663fSDavid du Colombier case D_CONST2:
756*6520663fSDavid du Colombier t |= T_OFFSET|T_OFFSET2;
757*6520663fSDavid du Colombier break;
7583e12c5d1SDavid du Colombier case D_SCONST:
7593e12c5d1SDavid du Colombier t |= T_SCONST;
7603e12c5d1SDavid du Colombier break;
7613e12c5d1SDavid du Colombier case D_NONE:
7623e12c5d1SDavid du Colombier break;
7633e12c5d1SDavid du Colombier }
7643e12c5d1SDavid du Colombier Bputc(&obuf, t);
7653e12c5d1SDavid du Colombier
7663e12c5d1SDavid du Colombier if(t & T_INDEX) { /* implies index, scale */
7673e12c5d1SDavid du Colombier Bputc(&obuf, a->index);
7683e12c5d1SDavid du Colombier Bputc(&obuf, a->scale);
7693e12c5d1SDavid du Colombier }
7703e12c5d1SDavid du Colombier if(t & T_OFFSET) { /* implies offset */
7713e12c5d1SDavid du Colombier l = a->offset;
7723e12c5d1SDavid du Colombier Bputc(&obuf, l);
7733e12c5d1SDavid du Colombier Bputc(&obuf, l>>8);
7743e12c5d1SDavid du Colombier Bputc(&obuf, l>>16);
7753e12c5d1SDavid du Colombier Bputc(&obuf, l>>24);
7763e12c5d1SDavid du Colombier }
777*6520663fSDavid du Colombier if(t & T_OFFSET2) {
778*6520663fSDavid du Colombier l = a->offset2;
779*6520663fSDavid du Colombier Bputc(&obuf, l);
780*6520663fSDavid du Colombier Bputc(&obuf, l>>8);
781*6520663fSDavid du Colombier Bputc(&obuf, l>>16);
782*6520663fSDavid du Colombier Bputc(&obuf, l>>24);
783*6520663fSDavid du Colombier }
7843e12c5d1SDavid du Colombier if(t & T_SYM) /* implies sym */
7853e12c5d1SDavid du Colombier Bputc(&obuf, s);
7863e12c5d1SDavid du Colombier if(t & T_FCONST) {
7873e12c5d1SDavid du Colombier ieeedtod(&e, a->dval);
7883e12c5d1SDavid du Colombier l = e.l;
7893e12c5d1SDavid du Colombier Bputc(&obuf, l);
7903e12c5d1SDavid du Colombier Bputc(&obuf, l>>8);
7913e12c5d1SDavid du Colombier Bputc(&obuf, l>>16);
7923e12c5d1SDavid du Colombier Bputc(&obuf, l>>24);
7933e12c5d1SDavid du Colombier l = e.h;
7943e12c5d1SDavid du Colombier Bputc(&obuf, l);
7953e12c5d1SDavid du Colombier Bputc(&obuf, l>>8);
7963e12c5d1SDavid du Colombier Bputc(&obuf, l>>16);
7973e12c5d1SDavid du Colombier Bputc(&obuf, l>>24);
7983e12c5d1SDavid du Colombier return;
7993e12c5d1SDavid du Colombier }
8003e12c5d1SDavid du Colombier if(t & T_SCONST) {
8013e12c5d1SDavid du Colombier n = a->sval;
8023e12c5d1SDavid du Colombier for(i=0; i<NSNAME; i++) {
8033e12c5d1SDavid du Colombier Bputc(&obuf, *n);
8043e12c5d1SDavid du Colombier n++;
8053e12c5d1SDavid du Colombier }
8063e12c5d1SDavid du Colombier return;
8073e12c5d1SDavid du Colombier }
8083e12c5d1SDavid du Colombier if(t & T_TYPE)
8093e12c5d1SDavid du Colombier Bputc(&obuf, a->type);
8103e12c5d1SDavid du Colombier }
8113e12c5d1SDavid du Colombier
8123e12c5d1SDavid du Colombier void
outcode(int a,Gen2 * g2)8133e12c5d1SDavid du Colombier outcode(int a, Gen2 *g2)
8143e12c5d1SDavid du Colombier {
8153e12c5d1SDavid du Colombier int sf, st, t;
8163e12c5d1SDavid du Colombier Sym *s;
8173e12c5d1SDavid du Colombier
8183e12c5d1SDavid du Colombier if(pass == 1)
8193e12c5d1SDavid du Colombier goto out;
8203e12c5d1SDavid du Colombier
8213e12c5d1SDavid du Colombier jackpot:
8223e12c5d1SDavid du Colombier sf = 0;
8233e12c5d1SDavid du Colombier s = g2->from.sym;
8243e12c5d1SDavid du Colombier while(s != S) {
8253e12c5d1SDavid du Colombier sf = s->sym;
8263e12c5d1SDavid du Colombier if(sf < 0 || sf >= NSYM)
8273e12c5d1SDavid du Colombier sf = 0;
8283e12c5d1SDavid du Colombier t = g2->from.type;
82980ee5cbfSDavid du Colombier if(t == D_ADDR)
83080ee5cbfSDavid du Colombier t = g2->from.index;
8313e12c5d1SDavid du Colombier if(h[sf].type == t)
8323e12c5d1SDavid du Colombier if(h[sf].sym == s)
8333e12c5d1SDavid du Colombier break;
8343e12c5d1SDavid du Colombier zname(s->name, t, sym);
8353e12c5d1SDavid du Colombier s->sym = sym;
8363e12c5d1SDavid du Colombier h[sym].sym = s;
8373e12c5d1SDavid du Colombier h[sym].type = t;
8383e12c5d1SDavid du Colombier sf = sym;
8393e12c5d1SDavid du Colombier sym++;
8403e12c5d1SDavid du Colombier if(sym >= NSYM)
8413e12c5d1SDavid du Colombier sym = 1;
8423e12c5d1SDavid du Colombier break;
8433e12c5d1SDavid du Colombier }
8443e12c5d1SDavid du Colombier st = 0;
8453e12c5d1SDavid du Colombier s = g2->to.sym;
8463e12c5d1SDavid du Colombier while(s != S) {
8473e12c5d1SDavid du Colombier st = s->sym;
8483e12c5d1SDavid du Colombier if(st < 0 || st >= NSYM)
8493e12c5d1SDavid du Colombier st = 0;
8503e12c5d1SDavid du Colombier t = g2->to.type;
85180ee5cbfSDavid du Colombier if(t == D_ADDR)
85280ee5cbfSDavid du Colombier t = g2->to.index;
8533e12c5d1SDavid du Colombier if(h[st].type == t)
8543e12c5d1SDavid du Colombier if(h[st].sym == s)
8553e12c5d1SDavid du Colombier break;
8563e12c5d1SDavid du Colombier zname(s->name, t, sym);
8573e12c5d1SDavid du Colombier s->sym = sym;
8583e12c5d1SDavid du Colombier h[sym].sym = s;
8593e12c5d1SDavid du Colombier h[sym].type = t;
8603e12c5d1SDavid du Colombier st = sym;
8613e12c5d1SDavid du Colombier sym++;
8623e12c5d1SDavid du Colombier if(sym >= NSYM)
8633e12c5d1SDavid du Colombier sym = 1;
8643e12c5d1SDavid du Colombier if(st == sf)
8653e12c5d1SDavid du Colombier goto jackpot;
8663e12c5d1SDavid du Colombier break;
8673e12c5d1SDavid du Colombier }
8683e12c5d1SDavid du Colombier Bputc(&obuf, a);
8693e12c5d1SDavid du Colombier Bputc(&obuf, a>>8);
8703e12c5d1SDavid du Colombier Bputc(&obuf, lineno);
8713e12c5d1SDavid du Colombier Bputc(&obuf, lineno>>8);
8723e12c5d1SDavid du Colombier Bputc(&obuf, lineno>>16);
8733e12c5d1SDavid du Colombier Bputc(&obuf, lineno>>24);
8743e12c5d1SDavid du Colombier zaddr(&g2->from, sf);
8753e12c5d1SDavid du Colombier zaddr(&g2->to, st);
8763e12c5d1SDavid du Colombier
8773e12c5d1SDavid du Colombier out:
8783e12c5d1SDavid du Colombier if(a != AGLOBL && a != ADATA)
8793e12c5d1SDavid du Colombier pc++;
8803e12c5d1SDavid du Colombier }
8813e12c5d1SDavid du Colombier
8823e12c5d1SDavid du Colombier void
outhist(void)8833e12c5d1SDavid du Colombier outhist(void)
8843e12c5d1SDavid du Colombier {
8853e12c5d1SDavid du Colombier Gen g;
8863e12c5d1SDavid du Colombier Hist *h;
8877dd7cddfSDavid du Colombier char *p, *q, *op, c;
8883e12c5d1SDavid du Colombier int n;
8893e12c5d1SDavid du Colombier
8903e12c5d1SDavid du Colombier g = nullgen;
8917dd7cddfSDavid du Colombier c = pathchar();
8923e12c5d1SDavid du Colombier for(h = hist; h != H; h = h->link) {
8933e12c5d1SDavid du Colombier p = h->name;
894219b2ee8SDavid du Colombier op = 0;
895375daca8SDavid du Colombier /* on windows skip drive specifier in pathname */
896375daca8SDavid du Colombier if(systemtype(Windows) && p && p[1] == ':'){
897375daca8SDavid du Colombier p += 2;
898375daca8SDavid du Colombier c = *p;
899375daca8SDavid du Colombier }
9007dd7cddfSDavid du Colombier if(p && p[0] != c && h->offset == 0 && pathname){
9017dd7cddfSDavid du Colombier /* on windows skip drive specifier in pathname */
902375daca8SDavid du Colombier if(systemtype(Windows) && pathname[1] == ':') {
9037dd7cddfSDavid du Colombier op = p;
9047dd7cddfSDavid du Colombier p = pathname+2;
905375daca8SDavid du Colombier c = *p;
9067dd7cddfSDavid du Colombier } else if(pathname[0] == c){
907219b2ee8SDavid du Colombier op = p;
908219b2ee8SDavid du Colombier p = pathname;
909219b2ee8SDavid du Colombier }
9107dd7cddfSDavid du Colombier }
9113e12c5d1SDavid du Colombier while(p) {
9127dd7cddfSDavid du Colombier q = strchr(p, c);
9133e12c5d1SDavid du Colombier if(q) {
9143e12c5d1SDavid du Colombier n = q-p;
915375daca8SDavid du Colombier if(n == 0){
9163e12c5d1SDavid du Colombier n = 1; /* leading "/" */
917375daca8SDavid du Colombier *p = '/'; /* don't emit "\" on windows */
918375daca8SDavid du Colombier }
9193e12c5d1SDavid du Colombier q++;
9203e12c5d1SDavid du Colombier } else {
9213e12c5d1SDavid du Colombier n = strlen(p);
9223e12c5d1SDavid du Colombier q = 0;
9233e12c5d1SDavid du Colombier }
9243e12c5d1SDavid du Colombier if(n) {
925219b2ee8SDavid du Colombier Bputc(&obuf, ANAME);
926219b2ee8SDavid du Colombier Bputc(&obuf, ANAME>>8);
927219b2ee8SDavid du Colombier Bputc(&obuf, D_FILE); /* type */
928219b2ee8SDavid du Colombier Bputc(&obuf, 1); /* sym */
929219b2ee8SDavid du Colombier Bputc(&obuf, '<');
930219b2ee8SDavid du Colombier Bwrite(&obuf, p, n);
931219b2ee8SDavid du Colombier Bputc(&obuf, 0);
9323e12c5d1SDavid du Colombier }
9333e12c5d1SDavid du Colombier p = q;
934219b2ee8SDavid du Colombier if(p == 0 && op) {
935219b2ee8SDavid du Colombier p = op;
936219b2ee8SDavid du Colombier op = 0;
937219b2ee8SDavid du Colombier }
9383e12c5d1SDavid du Colombier }
9393e12c5d1SDavid du Colombier g.offset = h->offset;
9403e12c5d1SDavid du Colombier
9413e12c5d1SDavid du Colombier Bputc(&obuf, AHISTORY);
9423e12c5d1SDavid du Colombier Bputc(&obuf, AHISTORY>>8);
9433e12c5d1SDavid du Colombier Bputc(&obuf, h->line);
9443e12c5d1SDavid du Colombier Bputc(&obuf, h->line>>8);
9453e12c5d1SDavid du Colombier Bputc(&obuf, h->line>>16);
9463e12c5d1SDavid du Colombier Bputc(&obuf, h->line>>24);
9473e12c5d1SDavid du Colombier zaddr(&nullgen, 0);
9483e12c5d1SDavid du Colombier zaddr(&g, 0);
9493e12c5d1SDavid du Colombier }
9503e12c5d1SDavid du Colombier }
9513e12c5d1SDavid du Colombier
9523e12c5d1SDavid du Colombier #include "../cc/lexbody"
9533e12c5d1SDavid du Colombier #include "../cc/macbody"
9547dd7cddfSDavid du Colombier #include "../cc/compat"
955