|
|
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[] = "@(#)assizetab.c 5.1 (Berkeley) 4/30/85";
9: #endif not lint
10:
11: #ifdef AS
12: #include <stdio.h>
13: #include "as.h"
14: #include "assyms.h"
15:
16: /*
17: * Convert loader reference types (plus PCREL) to bytes and lg bytes
18: */
19: int reflen[] = { /* {LEN*+PCREL} ==> number of bytes */
20: 0, 0,
21: 1, 1, /* LEN1, LEN1 + PCREL */
22: 2, 2, /* LEN2, LEN2 + PCREL */
23: 4, 4, /* LEN4, LEN2 + PCREL */
24: 8, 8, /* LEN8, LEN2 + PCREL */
25: 16, 16 /* LEN16, LEN16 + PCREL */
26: };
27: int lgreflen[] = { /* {LEN*+PCREL} ==> number of bytes */
28: -1, -1,
29: 0, 0, /* LEN1, LEN1 + PCREL */
30: 1, 1, /* LEN2, LEN2 + PCREL */
31: 2, 2, /* LEN4, LEN2 + PCREL */
32: 3, 3, /* LEN8, LEN2 + PCREL */
33: 4, 4 /* LEN16, LEN16 + PCREL */
34: };
35:
36: /*
37: * Convert sizes to loader reference types and type flags
38: */
39: /*0 1 2 3 4 5 6 7 8*/
40: /*
41: * Convert {1,2,4,8} into {LEN1, LEN2, LEN4, LEN8}
42: */
43: int len124[] = {
44: 0, LEN1, /* 0 */
45: LEN2, 0, /* 2 */
46: LEN4, 0, /* 4 */
47: 0, 0, /* 6 */
48: LEN8, 0, /* 8 */
49: 0, 0, /* 10 */
50: 0, 0, /* 12 */
51: 0, 0, /* 14 */
52: LEN16, 0 /* 16 */
53: };
54: /*
55: * Convert {1,2,4,8} into {bits to construct operands}
56: */
57: char mod124[] = {
58: 0, 0x00, /* 0 */
59: 0x20, 0, /* 2 */
60: 0x40, 0, /* 4 */
61: 0, 0, /* 6 */
62: 0, 0, /* 8 */
63: 0, 0, /* 10 */
64: 0, 0, /* 12 */
65: 0, 0, /* 14 */
66: 0, 0 /* 16 */
67: };
68: /*
69: * {1,2,4,8} into {TYPB, TYPW, TYPL, TYPQ}
70: */
71: int type_124[] = {
72: 0, TYPB, /* 0 */
73: TYPW, 0, /* 2 */
74: TYPL, 0, /* 4 */
75: 0, 0, /* 6 */
76: TYPQ, 0, /* 8 */
77: 0, 0, /* 10 */
78: 0, 0, /* 12 */
79: 0, 0, /* 14 */
80: TYPO, 0 /* 16 */
81: };
82: #endif AS
83: /*
84: * Convert TYP[BWLQOFDGH] into {1 if relocation not OK}
85: */
86: int ty_NORELOC[] = {
87: 0, /* TYPB */
88: 0, /* TYPW */
89: 0, /* TYPL */
90: 1, /* TYPQ */
91: 1, /* TYPO */
92: 1, /* TYPF */
93: 1, /* TYPD */
94: 1, /* TYPG */
95: 1, /* TYPH */
96: 1 /* TYPNONE */
97: };
98: #ifndef ADB
99: /*
100: * Convert TYP[BWLQOFDGH] into {1 if a floating point number}
101: */
102: int ty_float[] = {
103: 0, /* TYPB */
104: 0, /* TYPW */
105: 0, /* TYPL */
106: 0, /* TYPQ */
107: 0, /* TYPO */
108: 1, /* TYPF */
109: 1, /* TYPD */
110: 1, /* TYPG */
111: 1, /* TYPH */
112: 0 /* TYPNONE */
113: };
114: #endif
115: #ifdef AS
116: /*
117: * Convert TYP[BWLQOFDGH] into {LEN1 ... LEN16}
118: */
119: int ty_LEN[] = {
120: LEN1, /* TYPB */
121: LEN2, /* TYPW */
122: LEN4, /* TYPL */
123: LEN8, /* TYPQ */
124: LEN16, /* TYPO */
125: LEN4, /* TYPF */
126: LEN8, /* TYPD */
127: LEN8, /* TYPG */
128: LEN16, /* TYPH */
129: 0 /* TYPNONE */
130: };
131: #endif AS
132: /*
133: * Convert TYP[BWLQOFDGH] into {1 ... 16}
134: */
135: int ty_nbyte[] = {
136: 1, /* TYPB */
137: 2, /* TYPW */
138: 4, /* TYPL */
139: 8, /* TYPQ */
140: 16, /* TYPO */
141: 4, /* TYPF */
142: 8, /* TYPD */
143: 8, /* TYPG */
144: 16, /* TYPH */
145: 0 /* TYPNONE */
146: };
147: #ifndef ADB
148: /*
149: * Convert TYP[BWLQOFDGH] into lg{1 ... 16}
150: */
151: int ty_nlg[] = {
152: 0, /* TYPB */
153: 1, /* TYPW */
154: 2, /* TYPL */
155: 3, /* TYPQ */
156: 4, /* TYPO */
157: 2, /* TYPF */
158: 3, /* TYPD */
159: 3, /* TYPG */
160: 4, /* TYPH */
161: -1 /* TYPNONE */
162: };
163: /*
164: * Convert TYP[BWLQOFDGH] into strings
165: */
166: char *ty_string[] = {
167: "byte", /* TYPB */
168: "word", /* TYPW */
169: "long", /* TYPL */
170: "quad", /* TYPQ */
171: "octa", /* TYPO */
172: "f_float", /* TYPF */
173: "d_float", /* TYPD */
174: "g_float", /* TYPG */
175: "h_float", /* TYPH */
176: "unpackd", /* TYPUNPACKED */
177: "??snark??" /* TYPNONE */
178: };
179: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.