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