|
|
1.1 root 1: static char sccsid[] = "@(#)optab.c 4.1 10/9/80";
2: #include "defs.h"
3:
4: /*
5: * Instruction printing routines.
6: * MACHINE DEPENDENT
7: *
8: */
9:
10: /*
11: * Argument access types
12: */
13: #define ACCA (8<<3) /* address only */
14: #define ACCR (1<<3) /* read */
15: #define ACCW (2<<3) /* write */
16: #define ACCM (3<<3) /* modify */
17: #define ACCB (4<<3) /* branch displacement */
18: #define ACCI (5<<3) /* XFC code */
19:
20: /*
21: * Argument data types
22: */
23: #define TYPB 0 /* byte */
24: #define TYPW 1 /* word */
25: #define TYPL 2 /* long */
26: #define TYPQ 3 /* quad */
27: #define TYPF 4 /* floating */
28: #define TYPD 5 /* double floating */
29:
30:
31: TYPE struct optab *OPTAB;
32: struct optab {
33: char *iname;
34: char val;
35: char nargs;
36: char argtype[6];
37: } optab[] = {
38: #define OP(a,b,c,d,e,f,g,h,i) {a,b,c,d,e,f,g,h,i}
39: #include "../as/instrs"
40: 0};
41:
42: #define SYSTAB struct systab
43: SYSTAB {
44: int argc;
45: char *sname;
46: } systab[] = {
47: 1, "indir",
48: 0, "exit",
49: 0, "fork",
50: 2, "read",
51: 2, "write",
52: 2, "open",
53: 0, "close",
54: 0, "wait",
55: 2, "creat",
56: 2, "link",
57: 1, "unlink",
58: 2, "exec",
59: 1, "chdir",
60: 0, "time",
61: 3, "mknod",
62: 2, "chmod",
63: 2, "chown",
64: 1, "break",
65: 2, "stat",
66: 2, "seek",
67: 0, "getpid",
68: 3, "mount",
69: 1, "umount",
70: 0, "setuid",
71: 0, "getuid",
72: 0, "stime",
73: 3, "ptrace",
74: 0, "alarm",
75: 1, "fstat",
76: 0, "pause",
77: 1, "30",
78: 1, "stty",
79: 1, "gtty",
80: 0, "access",
81: 0, "nice",
82: 0, "sleep",
83: 0, "sync",
84: 1, "kill",
85: 0, "csw",
86: 0, "setpgrp",
87: 0, "tell",
88: 0, "dup",
89: 0, "pipe",
90: 1, "times",
91: 4, "profil",
92: 0, "tiu",
93: 0, "setgid",
94: 0, "getgid",
95: 2, "signal",
96: 0, "49",
97: 0, "50",
98: 0, "51",
99: 0, "52",
100: 0, "53",
101: 0, "54",
102: 0, "55",
103: 0, "56",
104: 0, "57",
105: 0, "58",
106: 0, "59",
107: 0, "60",
108: 0, "61",
109: 0, "62",
110: 0, "63",
111: };
112:
113: STRING regname[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
114: "r8", "r9", "r10","r11","ap", "fp", "sp", "pc"};
115: STRING fltimm[] = {
116: "0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875", "0.9375",
117: "1.0", "1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875",
118: "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75",
119: "4.0", "4.5", "5.0", "5.5", "6.0", "6.5", "7.0", "7.5",
120: "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0",
121: "16.0", "18.0", "20.0", "22.0", "24.0", "26.0", "28.0", "30.0",
122: "32.0", "36.0", "40.0", "44.0", "48.0", "52.0", "56.0", "60.0",
123: "64.0", "72.0", "80.0", "88.0", "96.0", "104.0", "112.0", "120.0"
124: };
125:
126: char *fmtr = {"%r"};
127: char *fmtR = {"%R"};
128:
129: REGLIST reglist [] = {
130: "p1lr", P1LR,
131: "p1br",P1BR,
132: "p0lr", P0LR,
133: "p0br",P0BR,
134: "ksp",KSP,
135: "esp",ESP,
136: "ssp",SSP,
137: "psl", PSL,
138: "pc", PC,
139: "usp",USP,
140: "fp", FP,
141: "ap", AP,
142: "r11", R11,
143: "r10", R10,
144: "r9", R9,
145: "r8", R8,
146: "r7", R7,
147: "r6", R6,
148: "r5", R5,
149: "r4", R4,
150: "r3", R3,
151: "r2", R2,
152: "r1", R1,
153: "r0", R0,
154: };
155:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.