Annotation of coherent/b/bin/c/common/i386/geno.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * common/i386/geno.c
        !             3:  * Output one and two operand opcodes with their address fields.
        !             4:  * Used in cc1 and cc2.
        !             5:  * i386.
        !             6:  */
        !             7: 
        !             8: #ifdef   vax
        !             9: #include "INC$LIB:mch.h"
        !            10: #include "INC$LIB:host.h"
        !            11: #include "INC$LIB:ops.h"
        !            12: #include "INC$LIB:var.h"
        !            13: #include "INC$LIB:varmch.h"
        !            14: #include "INC$LIB:opcode.h"
        !            15: #include "INC$LIB:stream.h"
        !            16: #else
        !            17: #include "mch.h"
        !            18: #include "host.h"
        !            19: #include "ops.h"
        !            20: #include "var.h"
        !            21: #include "varmch.h"
        !            22: #include "opcode.h"
        !            23: #include "stream.h"
        !            24: #endif
        !            25: 
        !            26: extern int *genaf();
        !            27: 
        !            28: /*
        !            29:  * Bogus nachos.
        !            30:  * There is a lot of lint to be picked here.
        !            31:  * Before the i386 compiler port,
        !            32:  * both the machine-independent compiler base
        !            33:  * and the machine-dependent parts of the compiler
        !            34:  * implicitly assumed sizeof(int) >= sizeof(ival_t).
        !            35:  * Arguments to genone(), gentwo() and genaf()
        !            36:  * are implicitly int throughout the source.
        !            37:  * For the 286-based i386 cross compiler,
        !            38:  * sizeof(ival_t) > sizeof(int) (32 > 16), 
        !            39:  * so information in the high word of the ival_t
        !            40:  * written by genaf() below is garbage.
        !            41:  * This should be cleaned up when time permits!
        !            42:  */
        !            43: 
        !            44: /* VARARGS. */
        !            45: genone(op)
        !            46: {
        !            47:        bput(CODE);
        !            48:        bput(op);
        !            49:        genaf(&op + 1);
        !            50: }
        !            51: 
        !            52: /* VARARGS. */
        !            53: gentwo(op)
        !            54: {
        !            55:        bput(CODE);
        !            56:        bput(op);
        !            57:        genaf(genaf(&op + 1));
        !            58: }
        !            59: 
        !            60: /* VARARGS. */
        !            61: int *
        !            62: genaf(mp) register int *mp;
        !            63: {
        !            64:        register int mode;
        !            65: 
        !            66:        iput((ival_t)(mode = *mp++));
        !            67:        if ((mode & A_OFFS) != 0)
        !            68:                iput(*((ival_t *)mp)++);
        !            69:        if ((mode & A_LID) != 0)
        !            70:                iput((ival_t)*mp++);
        !            71:        else if ((mode & A_GID) != 0)
        !            72:                sput(*((char **)mp)++);
        !            73:        return mp;
        !            74: }
        !            75: 
        !            76: /* end of common/i386/geno.c */

unix.superglobalmegacorp.com

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