Annotation of researchv10no/cmd/PDP11/11as/as29.c, revision 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.