Commit | Line | Data |
---|---|---|
e416c913 BJ |
1 | static char sccsid[] = "@(#)optab.c 4.1 %G%"; |
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 |