Annotation of 43BSD/bin/as/floattab.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1982 Regents of the University of California.
        !             3:  * All rights reserved.  The Berkeley software License Agreement
        !             4:  * specifies the terms and conditions for redistribution.
        !             5:  */
        !             6: 
        !             7: #ifndef lint
        !             8: static char sccsid[] = "@(#)floattab.c 5.1 (Berkeley) 4/30/85";
        !             9: #endif not lint
        !            10: 
        !            11: #include <stdio.h>
        !            12: #include "as.h"
        !            13: #define                N       NOTAKE
        !            14: 
        !            15: struct ty_bigdesc ty_bigdesc[] = {
        !            16: {      /* TYPB */
        !            17:        { 15, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N },
        !            18:        {  N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0 },
        !            19:        { N, N },
        !            20:        { N, N },
        !            21:        0,      /* mantissa lshift */
        !            22:        0,      /* exponent rshift */
        !            23:        8,      /* mantissa sig bits */
        !            24:        0,      /* exponent sig bits */
        !            25:        8,      /* exponent excess */
        !            26: },
        !            27: {      /* TYPW */
        !            28:        { 14, 15, N, N, N, N, N, N, N, N, N, N, N, N, N, N },
        !            29:        { N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, 1 },
        !            30:        { N, N},
        !            31:        { N, N},
        !            32:        0,      /* mantissa lshift */
        !            33:        0,      /* exponent rshift */
        !            34:        16,     /* mantissa sig bits */
        !            35:        0,      /* exponent sig bits */
        !            36:        16,     /* exponent excess */
        !            37: },
        !            38: {      /* TYPL */
        !            39:        { 12, 13, 14, 15, N, N, N, N, N, N, N, N, N, N, N, N },
        !            40:        { N, N, N, N, N, N, N, N, N, N, N, N, 0, 1, 2, 3 },
        !            41:        { N, N },
        !            42:        { N, N },
        !            43:        0,      /* mantissa lshift */
        !            44:        0,      /* exponent rshift */
        !            45:        32,     /* mantissa sig bits */
        !            46:        0,      /* exponent sig bits */
        !            47:        32,     /* exponent excess */
        !            48: },
        !            49: {      /* TYPQ */
        !            50:        { 8, 9, 10, 11, 12, 13, 14, 15, N, N, N, N, N, N, N, N },
        !            51:        { N, N, N, N, N, N, N, N, 0, 1, 2, 3, 4, 5, 6, 7 },
        !            52:        { N, N },
        !            53:        { N, N },
        !            54:        0,      /* mantissa lshift */
        !            55:        0,      /* exponent rshift */
        !            56:        64,     /* mantissa sig bits */
        !            57:        0,      /* exponent sig bits */
        !            58:        64,     /* exponent excess */
        !            59: },
        !            60: {      /* TYPO */
        !            61:        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
        !            62:        { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
        !            63:        { N, N },
        !            64:        { N, N },
        !            65:        0,      /* mantissa lshift */
        !            66:        0,      /* exponent rshift */
        !            67:        128,    /* mantissa sig bits */
        !            68:        0,      /* exponent sig bits */
        !            69:        128,    /* exponent excess */
        !            70: },
        !            71: {      /* TYPF */
        !            72:        { 15, N, 13, 14, N, N, N, N, N, N, N, N, N, N, N, N },
        !            73:        { N, N, N, N, N, N, N, N, N, N, N, N, N, 2, 3, 0 },
        !            74:        { 0, 1 },
        !            75:        { 0, 1 },
        !            76:        1,      /* mantissa lshift */
        !            77:        7,      /* exponent rshift */
        !            78:        24,     /* mantissa sig bits */
        !            79:        8,      /* exponent sig bits */
        !            80:        128     /* exponent excess */
        !            81: },
        !            82: {      /* TYPD */
        !            83:        { 15, N, 13, 14, 11, 12, 9, 10, N, N, N, N, N, N, N, N },
        !            84:        { N, N, N, N, N, N, N, N, N, 6, 7, 4, 5, 2, 3, 0 },
        !            85:        { 0, 1 },
        !            86:        { 0, 1 },
        !            87:        1,      /* mantissa lshift */
        !            88:        7,      /* exponent rshift */
        !            89:        56,     /* mantissa sig bits */
        !            90:        8,      /* exponent sig bits */
        !            91:        128     /* exponent excess */
        !            92: },
        !            93: {      /* TYPG */
        !            94:        { 15, N, 13, 14, 11, 12, 9, 10, N, N, N, N, N, N, N, N },
        !            95:        { N, N, N, N, N, N, N, N, N, 6, 7, 4, 5, 2, 3, 0 },
        !            96:        { 0, 1 },
        !            97:        { 0, 1 },
        !            98:        4,      /* mantissa lshift */
        !            99:        4,      /* exponent rshift */
        !           100:        53,     /* mantissa sig bits */
        !           101:        11,     /* exponent sig bits */
        !           102:        1024    /* exponent excess */
        !           103: },
        !           104: {      /* TYPH */
        !           105:        { N, N, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3 },
        !           106:        { N, N, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3 },
        !           107:        { 0, 1 },
        !           108:        { 0, 1 },
        !           109:        0,      /* mantissa lshift */
        !           110:        0,      /* exponent rshift */
        !           111:        113,    /* mantissa sig bits */
        !           112:        15,     /* exponent sig bits */
        !           113:        16384   /* exponent excess */
        !           114: },
        !           115: {0}            /* TYPNONE */
        !           116: };
        !           117: 
        !           118: cfloattab()
        !           119: {
        !           120:        reg     struct ty_bigdesc       *p;
        !           121:        reg     int     i;
        !           122:        reg     int     j;
        !           123:        reg     int     k;
        !           124:                extern  int     ty_float[];
        !           125: 
        !           126:        for (i = 0; i < TYPNONE - 1; i++){
        !           127:                p = &ty_bigdesc[i];
        !           128:                for (j = 0; j < 16; j++){
        !           129:                        if (((char)p->b_upmmap[j]) != NOTAKE){
        !           130:                                k = p->b_pmmap[p->b_upmmap[j]];
        !           131:                                if (j != k)
        !           132:                                        printf("%s:p[up[%d]] == %d\n",
        !           133:                                                ty_string[i],j,k);
        !           134:                        }
        !           135: 
        !           136:                        if (((char)p->b_pmmap[j]) != NOTAKE){
        !           137:                                k = p->b_upmmap[p->b_pmmap[j]];
        !           138:                                if (j != k)
        !           139:                                        printf("%s:up[p[%d]] == %d\n",
        !           140:                                                ty_string[i],j,k);
        !           141:                        }
        !           142:                }
        !           143:                if (!ty_float[i])
        !           144:                        continue;
        !           145:                k = (p->b_msigbits - 1) + p->b_mlshift;
        !           146:                if (k % 8)
        !           147:                        printf("sigbits: %d, lshift: %d, excess: %d\n",
        !           148:                                p->b_msigbits, p->b_mlshift, k % 8);
        !           149:                if ((15 - (k / 8)) < 0)
        !           150:                        printf("lsbyte <= 0\n");
        !           151:                if ( (8 - (p->b_mlshift + 2)) <= 0)
        !           152:                        printf("Shifted byte 15 into byte 14");
        !           153:                if ( 1 << (p->b_esigbits - 1) != p->b_eexcess)
        !           154:                        printf("sigbits == %d, excess = %d\n",
        !           155:                                p->b_esigbits, p->b_eexcess);
        !           156:        }
        !           157: }

unix.superglobalmegacorp.com

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