Annotation of coherent/b/bin/c/n2/i8086/getcod.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * The routines in this file
        !             3:  * read in code from the intermediate file.
        !             4:  * It is almost machine independent but it has been
        !             5:  * broken out just in case a strange machine creeps
        !             6:  * along.
        !             7:  */
        !             8: #ifdef   vax
        !             9: #include "INC$LIB:cc2.h"
        !            10: #else
        !            11: #include "cc2.h"
        !            12: #endif
        !            13: 
        !            14: /*
        !            15:  * Read in a code item.
        !            16:  * Return a pointer to a filled in
        !            17:  * INS node.
        !            18:  */
        !            19: INS *
        !            20: getcode()
        !            21: {
        !            22:        register INS    *ip;
        !            23:        register OPINFO *opp;
        !            24:        register int    i;
        !            25:        register int    opcode;
        !            26: 
        !            27:        opcode = bget();
        !            28:        opp = &opinfo[opcode];
        !            29:        if (opp->op_style == OF_LPTR) {
        !            30:                if (iget() != (A_LID|A_DIR))
        !            31:                        cbotch("lptr");
        !            32:                ip = newi(sizeof(INS));
        !            33:                ip->i_type = LLLINK;
        !            34:                ip->i_fp = NULL;
        !            35:                ip->i_bp = NULL;
        !            36:                ip->i_labno = iget();
        !            37:                ip->i_sp = NULL;
        !            38:                ip->i_ip = NULL;
        !            39:                return (ip);
        !            40:        }
        !            41:        if ((opp->op_flag&OP_JUMP) != 0) {
        !            42:                if (iget() != (A_LID|A_DIR))
        !            43:                        cbotch("jump");
        !            44:                ip = newi(sizeof(INS));
        !            45:                ip->i_type = JUMP;
        !            46:                ip->i_long = 0;
        !            47:                ip->i_rel = opcode;
        !            48:                ip->i_fp = NULL;
        !            49:                ip->i_bp = NULL;
        !            50:                ip->i_labno = iget();
        !            51:                ip->i_sp = NULL;
        !            52:                ip->i_ip = NULL;
        !            53:                return (ip);
        !            54:        }
        !            55:        ip = newn(opp->op_naddr);
        !            56:        ip->i_type = CODE;
        !            57:        ip->i_fp = NULL;
        !            58:        ip->i_bp = NULL;
        !            59:        for (i=0; i<opp->op_naddr; ++i)
        !            60:                getfield(opcode, &ip->i_af[i]);
        !            61:        ip->i_op = opcode;
        !            62:        ip->i_naddr = opp->op_naddr;
        !            63:        return (ip);
        !            64: }
        !            65: 
        !            66: /*
        !            67:  * This routine reads in an AUTOS item
        !            68:  * that appears in a function body. All it does is
        !            69:  * read the size of the stack frame into the global cell
        !            70:  * `framesize', which is used by `genprolog' to put out
        !            71:  * the function prolog. The register field of the AUTOS
        !            72:  * item (the second ival_t) is thrown away.
        !            73:  */
        !            74: getautos()
        !            75: {
        !            76:        framesize = iget();
        !            77:        iget();
        !            78: }

unix.superglobalmegacorp.com

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