xref: /original-bsd/old/sdb/optab.c (revision ba72ef4c)
1 static	char sccsid[] = "@(#)optab.c 4.1 10/09/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 
156