Annotation of researchv10no/cmd/PDP11/11as/as29.c, revision 1.1.1.1

1.1       root        1: /* a9 -- pdp-11 assembler pass 1 */
                      2: #include "as2.h"
                      3: 
                      4: /* key to types
                      5: /*
                      6: /*     T_UNDEF 0 undefined
                      7: /*     T_ABS   1 absolute
                      8: /*     T_TEXT  2 text
                      9: /*     T_DATA  3 data
                     10: /*     T_BSS   4 bss
                     11: /*     T_FLOPD 5 flop freg,dst (movfo, = stcfd)
                     12: /*     T_BRANCH        6 branch
                     13: /*     T_JSR   7 jsr
                     14: /*     T_RTS   010 rts
                     15: /*     T_SYS   011 sys
                     16: /*     T_MOVF  012 movf (=ldf,stf)
                     17: /*     T_DOUBLE        013 double operand (mov)
                     18: /*     T_FLOPF 014 flop fsrc,freg (addf)
                     19: /*     T_SINGLE        015 single operand (clr)
                     20: /*     T_BYTE  016 .byte
                     21: /*     T_STRING        017 string (.ascii, "<")
                     22: /*     T_EVEN  020 .even
                     23: /*     T_IF    021 .if
                     24: /*     T_ENDIF 022 .endif
                     25: /*     T_GLOBL 023 .globl
                     26: /*     T_REG   024 register
                     27: /*     T__TEXT 025 .text
                     28: /*     T__DATA 026 .data
                     29: /*     T__BSS  027 .bss
                     30: /*     T_MUL   030 mul,div, etc
                     31: /*     T_SOB   031 sob
                     32: /*     T_COMM  032 .comm
                     33: /*     T_ESTTXT        033 estimated text
                     34: /*     T_ESTDAT        034 estimated data
                     35: /*     T_JBR   035 jbr
                     36: /*     T_JXX   036 jeq, jne, etc
                     37: */
                     38: 
                     39: struct expr symtab[] = {
                     40: 
                     41:        {T_TEXT, 000000},       /* . */
                     42:        {T_ABS, 000000},        /* .. */
                     43: 
                     44:        {T_REG, 000000},        /* r0 */
                     45:        {T_REG, 000001},        /* r1 */
                     46:        {T_REG, 000002},        /* r2 */
                     47:        {T_REG, 000003},        /* r3 */
                     48:        {T_REG, 000004},        /* r4 */
                     49:        {T_REG, 000005},        /* r5 */
                     50:        {T_REG, 000006},        /* sp */
                     51:        {T_REG, 000007},        /* pc */
                     52: 
                     53: #if eae!=0
                     54:        {T_ABS, 0177570},       /* csw */
                     55:        {T_ABS, 0177300},       /* div */
                     56:        {T_ABS, 0177302},       /* ac */
                     57:        {T_ABS, 0177304},       /* mq */
                     58:        {T_ABS, 0177306},       /* mul */
                     59:        {T_ABS, 0177310},       /* sc */
                     60:        {T_ABS, 0177311},       /* sr */
                     61:        {T_ABS, 0177312},       /* nor */
                     62:        {T_ABS, 0177314},       /* lsh */
                     63:        {T_ABS, 0177316},       /* ash */
                     64: #endif
                     65: 
                     66:        {T_DOUBLE, 0010000},    /* mov */
                     67:        {T_DOUBLE, 0110000},    /* movb */
                     68:        {T_DOUBLE, 0020000},    /* cmp */
                     69:        {T_DOUBLE, 0120000},    /* cmpb */
                     70:        {T_DOUBLE, 0030000},    /* bit */
                     71:        {T_DOUBLE, 0130000},    /* bitb */
                     72:        {T_DOUBLE, 0040000},    /* bic */
                     73:        {T_DOUBLE, 0140000},    /* bicb */
                     74:        {T_DOUBLE, 0050000},    /* bis */
                     75:        {T_DOUBLE, 0150000},    /* bisb */
                     76:        {T_DOUBLE, 0060000},    /* add */
                     77:        {T_DOUBLE, 0160000},    /* sub */
                     78: 
                     79:        {T_BRANCH, 0000400},    /* br */
                     80:        {T_BRANCH, 0001000},    /* bne */
                     81:        {T_BRANCH, 0001400},    /* beq */
                     82:        {T_BRANCH, 0002000},    /* bge */
                     83:        {T_BRANCH, 0002400},    /* blt */
                     84:        {T_BRANCH, 0003000},    /* bgt */
                     85:        {T_BRANCH, 0003400},    /* ble */
                     86:        {T_BRANCH, 0100000},    /* bpl */
                     87:        {T_BRANCH, 0100400},    /* bmi */
                     88:        {T_BRANCH, 0101000},    /* bhi */
                     89:        {T_BRANCH, 0101400},    /* blos */
                     90:        {T_BRANCH, 0102000},    /* bvc */
                     91:        {T_BRANCH, 0102400},    /* bvs */
                     92:        {T_BRANCH, 0103000},    /* bhis */
                     93:        {T_BRANCH, 0103000},    /* bec */
                     94:        {T_BRANCH, 0103000},    /* bcc */
                     95:        {T_BRANCH, 0103400},    /* blo */
                     96:        {T_BRANCH, 0103400},    /* bcs */
                     97:        {T_BRANCH, 0103400},    /* bes */
                     98: 
                     99:        {T_JBR, 0000400},       /* jbr */
                    100:        {T_JXX, 0001000},       /* jne */
                    101:        {T_JXX, 0001400},       /* jeq */
                    102:        {T_JXX, 0002000},       /* jge */
                    103:        {T_JXX, 0002400},       /* jlt */
                    104:        {T_JXX, 0003000},       /* jgt */
                    105:        {T_JXX, 0003400},       /* jle */
                    106:        {T_JXX, 0100000},       /* jpl */
                    107:        {T_JXX, 0100400},       /* jmi */
                    108:        {T_JXX, 0101000},       /* jhi */
                    109:        {T_JXX, 0101400},       /* jlos */
                    110:        {T_JXX, 0102000},       /* jvc */
                    111:        {T_JXX, 0102400},       /* jvs */
                    112:        {T_JXX, 0103000},       /* jhis */
                    113:        {T_JXX, 0103000},       /* jec */
                    114:        {T_JXX, 0103000},       /* jcc */
                    115:        {T_JXX, 0103400},       /* jlo */
                    116:        {T_JXX, 0103400},       /* jcs */
                    117:        {T_JXX, 0103400},       /* jes */
                    118: 
                    119:        {T_SINGLE, 0005000},    /* clr */
                    120:        {T_SINGLE, 0105000},    /* clrb */
                    121:        {T_SINGLE, 0005100},    /* com */
                    122:        {T_SINGLE, 0105100},    /* comb */
                    123:        {T_SINGLE, 0005200},    /* inc */
                    124:        {T_SINGLE, 0105200},    /* incb */
                    125:        {T_SINGLE, 0005300},    /* dec */
                    126:        {T_SINGLE, 0105300},    /* decb */
                    127:        {T_SINGLE, 0005400},    /* neg */
                    128:        {T_SINGLE, 0105400},    /* negb */
                    129:        {T_SINGLE, 0005500},    /* adc */
                    130:        {T_SINGLE, 0105500},    /* adcb */
                    131:        {T_SINGLE, 0005600},    /* sbc */
                    132:        {T_SINGLE, 0105600},    /* sbcb */
                    133:        {T_SINGLE, 0005700},    /* tst */
                    134:        {T_SINGLE, 0105700},    /* tstb */
                    135:        {T_SINGLE, 0006000},    /* ror */
                    136:        {T_SINGLE, 0106000},    /* rorb */
                    137:        {T_SINGLE, 0006100},    /* rol */
                    138:        {T_SINGLE, 0106100},    /* rolb */
                    139:        {T_SINGLE, 0006200},    /* asr */
                    140:        {T_SINGLE, 0106200},    /* asrb */
                    141:        {T_SINGLE, 0006300},    /* asl */
                    142:        {T_SINGLE, 0106300},    /* aslb */
                    143:        {T_SINGLE, 0000100},    /* jmp */
                    144:        {T_SINGLE, 0000300},    /* swab */
                    145: 
                    146:        {T_JSR, 0004000},       /* jsr */
                    147: 
                    148:        {T_RTS, 000200},        /* rts */
                    149: 
                    150:        {T_SYS, 0104400},       /* sys */
                    151: 
                    152:        {T_ABS, 0000241},       /* clc */
                    153:        {T_ABS, 0000242},       /* clv */
                    154:        {T_ABS, 0000244},       /* clz */
                    155:        {T_ABS, 0000250},       /* cln */
                    156:        {T_ABS, 0000261},       /* sec */
                    157:        {T_ABS, 0000262},       /* sev */
                    158:        {T_ABS, 0000264},       /* sez */
                    159:        {T_ABS, 0000270},       /* sen */
                    160: 
                    161:        {T_ABS, 0170000},       /* cfcc */
                    162:        {T_ABS, 0170001},       /* setf */
                    163:        {T_ABS, 0170011},       /* setd */
                    164:        {T_ABS, 0170002},       /* seti */
                    165:        {T_ABS, 0170012},       /* setl */
                    166:        {T_SINGLE, 0170400},    /* clrf */
                    167:        {T_SINGLE, 0170700},    /* negf */
                    168:        {T_SINGLE, 0170600},    /* absf */
                    169:        {T_SINGLE, 0170500},    /* tstf */
                    170:        {T_MOVF, 0172400},      /* movf */
                    171:        {T_FLOPF, 0177000},     /* movif */
                    172:        {T_FLOPD, 0175400},     /* movfi */
                    173:        {T_FLOPF, 0177400},     /* movof */
                    174:        {T_FLOPD, 0176000},     /* movfo */
                    175:        {T_FLOPF, 0172000},     /* addf */
                    176:        {T_FLOPF, 0173000},     /* subf */
                    177:        {T_FLOPF, 0171000},     /* mulf */
                    178:        {T_FLOPF, 0174400},     /* divf */
                    179:        {T_FLOPF, 0173400},     /* cmpf */
                    180:        {T_FLOPF, 0171400},     /* modf */
                    181:        {T_FLOPF, 0176400},     /* movie */
                    182:        {T_FLOPD, 0175000},     /* movei */
                    183:        {T_SINGLE, 0170100},    /* ldfps */
                    184:        {T_SINGLE, 0170200},    /* stfps */
                    185:        {T_REG, 000000},        /* fr0 */
                    186:        {T_REG, 000001},        /* fr1 */
                    187:        {T_REG, 000002},        /* fr2 */
                    188:        {T_REG, 000003},        /* fr3 */
                    189:        {T_REG, 000004},        /* fr4 */
                    190:        {T_REG, 000005},        /* fr5 */
                    191: 
                    192:        {T_MUL, 072000},        /* als */
                    193:        {T_MUL, 073000},        /* alsc */
                    194:        {T_MUL, 070000},        /* mpy */
                    195: #if (eae-1)!=0
                    196:        {T_MUL, 070000},        /* mul */
                    197:        {T_MUL, 071000},        /* div */
                    198:        {T_MUL, 072000},        /* ash */
                    199:        {T_MUL, 073000},        /* ashc */
                    200: #endif
                    201:        {T_MUL, 071000},        /* dvd */
                    202:        {T_JSR, 074000},        /* xor */
                    203:        {T_SINGLE, 006700},     /* sxt */
                    204:        {T_SYS, 006400},        /* mark */
                    205:        {T_SOB, 077000},        /* sob */
                    206: 
                    207:        {T_BYTE, 000000},       /* .byte */
                    208:        {T_EVEN, 000000},       /* .even */
                    209:        {T_IF, 000000}, /* .if */
                    210:        {T_ENDIF, 000000},      /* .endif */
                    211:        {T_GLOBL, 000000},      /* .globl */
                    212:        {T__TEXT, 000000},      /* .text */
                    213:        {T__DATA, 000000},      /* .data */
                    214:        {T__BSS, 000000},       /* .bss */
                    215:        {T_COMM, 000000},       /* .comm */
                    216: 
                    217: };
                    218: 
                    219: short *dotrel = &symtab[0].typ;
                    220: short *dot    = &symtab[0].val;
                    221: short *dotdot = &symtab[1].val;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.