4 #define ns32k_opcodeT int
5 #endif /* no ns32k_opcodeT */
7 struct not_wot
/* ns32k opcode table: wot to do with this */
8 /* particular opcode */
10 int obits
; /* number of opcode bits */
11 int ibits
; /* number of instruction bits */
12 ns32k_opcodeT code
; /* op-code (may be > 8 bits!) */
13 char *args
; /* how to compile said opcode */
16 struct not /* ns32k opcode text */
18 char * name
; /* opcode name: lowercase string [key] */
19 struct not_wot detail
; /* rest of opcode table [datum] */
22 /* Instructions look like this:
24 basic instruction--1, 2, or 3 bytes
25 index byte for operand A, if operand A is indexed--1 byte
26 index byte for operand B, if operand B is indexed--1 byte
27 addressing extension for operand A
28 addressing extension for operand B
31 Operand A is the operand listed first in the following opcode table.
32 Operand B is the operand listed second in the following opcode table.
33 All instructions have at most 2 general operands, so this is enough.
34 The implied operands are associated with operands other than A and B.
36 Each operand has a digit and a letter.
38 The digit gives the position in the assembly language. The letter,
39 one of the following, tells us what kind of operand it is. */
49 * i : immediate (8 bits)
50 * r : register number (3 bits)
51 * p : displacement - pc relative addressing
56 { "absf", 14,24, 0x35be, "1F2F" },
57 { "absl", 14,24, 0x34be, "1L2L" },
58 { "absb", 14,24, 0x304e, "1B2B" },
59 { "absw", 14,24, 0x314e, "1W2W" },
60 { "absd", 14,24, 0x334e, "1D2D" },
61 { "acbb", 7,16, 0x4c, "2B1q3p" },
62 { "acbw", 7,16, 0x4d, "2W1q3p" },
63 { "acbd", 7,16, 0x4f, "2D1q3p" },
64 { "addf", 14,24, 0x01be, "1F2F" },
65 { "addl", 14,24, 0x00be, "1L2L" },
66 { "addb", 6,16, 0x00, "1B2B" },
67 { "addw", 6,16, 0x01, "1W2W" },
68 { "addd", 6,16, 0x03, "1D2D" },
69 { "addcb", 6,16, 0x10, "1B2B" },
70 { "addcw", 6,16, 0x11, "1W2W" },
71 { "addcd", 6,16, 0x13, "1D2D" },
72 { "addpb", 14,24, 0x3c4e, "1B2B" },
73 { "addpw", 14,24, 0x3d4e, "1W2W" },
74 { "addpd", 14,24, 0x3f4e, "1D2D" },
75 { "addqb", 7,16, 0x0c, "2B1q" },
76 { "addqw", 7,16, 0x0d, "2W1q" },
77 { "addqd", 7,16, 0x0f, "2D1q" },
78 { "addr", 6,16, 0x27, "1D2D" },
79 { "adjspb", 11,16, 0x057c, "1B" },
80 { "adjspw", 11,16, 0x057d, "1W" },
81 { "adjspd", 11,16, 0x057f, "1D" },
82 { "andb", 6,16, 0x28, "1B2B" },
83 { "andw", 6,16, 0x29, "1W2W" },
84 { "andd", 6,16, 0x2b, "1D2D" },
85 { "ashb", 14,24, 0x044e, "1B2B" },
86 { "ashw", 14,24, 0x054e, "1B2W" },
87 { "ashd", 14,24, 0x074e, "1B2D" },
88 { "beq", 8,8, 0x0a, "1p" },
89 { "bne", 8,8, 0x1a, "1p" },
90 { "bcs", 8,8, 0x2a, "1p" },
91 { "bcc", 8,8, 0x3a, "1p" },
92 { "bhi", 8,8, 0x4a, "1p" },
93 { "bls", 8,8, 0x5a, "1p" },
94 { "bgt", 8,8, 0x6a, "1p" },
95 { "ble", 8,8, 0x7a, "1p" },
96 { "bfs", 8,8, 0x8a, "1p" },
97 { "bfc", 8,8, 0x9a, "1p" },
98 { "blo", 8,8, 0xaa, "1p" },
99 { "bhs", 8,8, 0xba, "1p" },
100 { "blt", 8,8, 0xca, "1p" },
101 { "bge", 8,8, 0xda, "1p" },
102 { "bicb", 6,16, 0x08, "1B2B" },
103 { "bicw", 6,16, 0x09, "1W2W" },
104 { "bicd", 6,16, 0x0b, "1D2D" },
105 { "bicpsrb", 11,16, 0x17c, "1B" },
106 { "bicpsrw", 11,16, 0x17d, "1W" },
107 { "bispsrb", 11,16, 0x37c, "1B" },
108 { "bispsrw", 11,16, 0x37d, "1W" },
109 { "bpt", 8,8, 0xf2, "" },
110 { "br", 8,8, 0xea, "1p" },
111 { "bsr", 8,8, 0x02, "1p" },
112 { "caseb", 11,16, 0x77c, "1B" },
113 { "casew", 11,16, 0x77d, "1W" },
114 { "cased", 11,16, 0x77f, "1D" },
115 { "cbitb", 14,24, 0x084e, "1B2D" },
116 { "cbitw", 14,24, 0x094e, "1W2D" },
117 { "cbitd", 14,24, 0x0b4e, "1D2D" },
118 { "cbitib", 14,24, 0x0c4e, "1B2D" },
119 { "cbitiw", 14,24, 0x0d4e, "1W2D" },
120 { "cbitid", 14,24, 0x0f4e, "1D2D" },
121 { "checkb", 11,24, 0x0ee, "2A3B1r" },
122 { "checkw", 11,24, 0x1ee, "2A3B1r" },
123 { "checkd", 11,24, 0x3ee, "2A3D1r" },
124 { "cmpf", 14,24, 0x09be, "1F2F" },
125 { "cmpl", 14,24, 0x08be, "1L2L" },
126 { "cmpb", 6,16, 0x04, "1B2B" },
127 { "cmpw", 6,16, 0x05, "1W2W" },
128 { "cmpd", 6,16, 0x07, "1D2D" },
129 { "cmpmb", 14,24, 0x04ce, "1D2D3d" },
130 { "cmpmw", 14,24, 0x05ce, "1D2D3d" },
131 { "cmpmd", 14,24, 0x07ce, "1D2D3d" },
132 { "cmpqb", 7,16, 0x1c, "2B1q" },
133 { "cmpqw", 7,16, 0x1d, "2W1q" },
134 { "cmpqd", 7,16, 0x1f, "2D1q" },
135 { "cmpsb", 16,16, 0x040e, "1i" },
136 { "cmpsw", 16,16, 0x050e, "1i" },
137 { "cmpsd", 16,16, 0x070e, "1i" },
138 { "cmpst", 16,16, 0x840e, "1i" },
139 { "comb", 14,24, 0x344e, "1B2B" },
140 { "comw", 14,24, 0x354e, "1W2W" },
141 { "comd", 14,24, 0x374e, "1D2D" },
142 { "cvtp", 11,24, 0x036e, "2D3D1r" },
143 { "cxp", 8,8, 0x22, "1p" },
144 { "cxpd", 11,16, 0x07f, "1D" },
145 { "deib", 14,24, 0x2cce, "1B2W" },
146 { "deiw", 14,24, 0x2dce, "1W2D" },
147 { "deid", 14,24, 0x2fce, "1D2Q" },
148 { "dia", 8,8, 0xc2, "" },
149 { "divf", 14,24, 0x21be, "1F2F" },
150 { "divl", 14,24, 0x20be, "1L2L" },
151 { "divb", 14,24, 0x3cce, "1B2B" },
152 { "divw", 14,24, 0x3dce, "1W2W" },
153 { "divd", 14,24, 0x3fce, "1D2D" },
154 { "enter", 8,8, 0x82, "1i2d" },
155 { "exit", 8,8, 0x92, "1i" },
156 { "extb", 11,24, 0x02e, "2D3B1r4d" },
157 { "extw", 11,24, 0x12e, "2D3W1r4d" },
158 { "extd", 11,24, 0x32e, "2D3D1r4d" },
159 { "extsb", 14,24, 0x0cce, "1D2B3i" },
160 { "extsw", 14,24, 0x0dce, "1D2W3i" },
161 { "extsd", 14,24, 0x0fce, "1D2D3i" },
162 { "ffsb", 14,24, 0x046e, "1B2B" },
163 { "ffsw", 14,24, 0x056e, "1W2B" },
164 { "ffsd", 14,24, 0x076e, "1D2B" },
165 { "flag", 8,8, 0xd2, "" },
166 { "floorfb", 14,24, 0x3c3e, "1F2B" },
167 { "floorfw", 14,24, 0x3d3e, "1F2W" },
168 { "floorfd", 14,24, 0x3f3e, "1F2D" },
169 { "floorlb", 14,24, 0x383e, "1L2B" },
170 { "floorlw", 14,24, 0x393e, "1L2W" },
171 { "floorld", 14,24, 0x3b3e, "1L2D" },
172 { "ibitb", 14,24, 0x384e, "1B2D" },
173 { "ibitw", 14,24, 0x394e, "1W2D" },
174 { "ibitd", 14,24, 0x3b4e, "1D2D" },
175 { "indexb", 11,24, 0x42e, "2B3B1r" },
176 { "indexw", 11,24, 0x52e, "2W3W1r" },
177 { "indexd", 11,24, 0x72e, "2D3D1r" },
178 { "insb", 11,24, 0x0ae, "2B3B1r4d" },
179 { "insw", 11,24, 0x1ae, "2W3W1r4d" },
180 { "insd", 11,24, 0x3ae, "2D3D1r4d" },
181 { "inssb", 14,24, 0x08ce, "1B2D3i" },
182 { "inssw", 14,24, 0x09ce, "1W2D3i" },
183 { "inssd", 14,24, 0x0bce, "1D2D3i" },
184 { "jsr", 11,16, 0x67f, "1A" },
185 { "jump", 11,16, 0x27f, "1A" },
186 { "lfsr", 19,24, 0x00f3e,"1D" },
187 { "lmr", 15,24, 0x0b1e, "2D1q" },
188 { "lprb", 7,16, 0x6c, "2B1q" },
189 { "lprw", 7,16, 0x6d, "2W1q" },
190 { "lprd", 7,16, 0x6f, "2D1q" },
191 { "lshb", 14,24, 0x144e, "1B2B" },
192 { "lshw", 14,24, 0x154e, "1B2W" },
193 { "lshd", 14,24, 0x174e, "1B2D" },
194 { "meib", 14,24, 0x24ce, "1B2W" },
195 { "meiw", 14,24, 0x25ce, "1W2D" },
196 { "meid", 14,24, 0x27ce, "1D2Q" },
197 { "modb", 14,24, 0x38ce, "1B2B" },
198 { "modw", 14,24, 0x39ce, "1W2W" },
199 { "modd", 14,24, 0x3bce, "1D2D" },
200 { "movf", 14,24, 0x05be, "1F2F" },
201 { "movl", 14,24, 0x04be, "1L2L" },
202 { "movb", 6,16, 0x14, "1B2B" },
203 { "movw", 6,16, 0x15, "1W2W" },
204 { "movd", 6,16, 0x17, "1D2D" },
205 { "movbf", 14,24, 0x043e, "1B2F" },
206 { "movwf", 14,24, 0x053e, "1W2F" },
207 { "movdf", 14,24, 0x073e, "1D2F" },
208 { "movbl", 14,24, 0x003e, "1B2L" },
209 { "movwl", 14,24, 0x013e, "1W2L" },
210 { "movdl", 14,24, 0x033e, "1D2L" },
211 { "movfl", 14,24, 0x1b3e, "1F2L" },
212 { "movlf", 14,24, 0x163e, "1L2F" },
213 { "movmb", 14,24, 0x00ce, "1D2D3d" },
214 { "movmw", 14,24, 0x01ce, "1D2D3d" },
215 { "movmd", 14,24, 0x03ce, "1D2D3d" },
216 { "movqb", 7,16, 0x5c, "2B1q" },
217 { "movqw", 7,16, 0x5d, "2B1q" },
218 { "movqd", 7,16, 0x5f, "2B1q" },
219 { "movsb", 16,16, 0x000e, "1i" },
220 { "movsw", 16,16, 0x010e, "1i" },
221 { "movsd", 16,16, 0x030e, "1i" },
222 { "movst", 16,16, 0x800e, "1i" },
223 { "movsub", 14,24, 0x0cae, "1A1A" },
224 { "movsuw", 14,24, 0x0dae, "1A1A" },
225 { "movsud", 14,24, 0x0fae, "1A1A" },
226 { "movusb", 14,24, 0x1cae, "1A1A" },
227 { "movusw", 14,24, 0x1dae, "1A1A" },
228 { "movusd", 14,24, 0x1fae, "1A1A" },
229 { "movxbd", 14,24, 0x1cce, "1B2D" },
230 { "movxwd", 14,24, 0x1dce, "1W2D" },
231 { "movxbw", 14,24, 0x10ce, "1B2W" },
232 { "movzbd", 14,24, 0x18ce, "1B2D" },
233 { "movzwd", 14,24, 0x19ce, "1W2D" },
234 { "movzbw", 14,24, 0x14ce, "1B2W" },
235 { "mulf", 14,24, 0x31be, "1F2F" },
236 { "mull", 14,24, 0x30be, "1L2L" },
237 { "mulb", 14,24, 0x20ce, "1B2B" },
238 { "mulw", 14,24, 0x21ce, "1W2W" },
239 { "muld", 14,24, 0x23ce, "1D2D" },
240 { "negf", 14,24, 0x15be, "1F2F" },
241 { "negl", 14,24, 0x14be, "1L2L" },
242 { "negb", 14,24, 0x204e, "1B2B" },
243 { "negw", 14,24, 0x214e, "1W2W" },
244 { "negd", 14,24, 0x234e, "1D2D" },
245 { "nop", 8,8, 0xa2, "" },
246 { "notb", 14,24, 0x244e, "1B2B" },
247 { "notw", 14,24, 0x254e, "1W2W" },
248 { "notd", 14,24, 0x274e, "1D2D" },
249 { "orb", 6,16, 0x18, "1B1B" },
250 { "orw", 6,16, 0x19, "1W1W" },
251 { "ord", 6,16, 0x1b, "1D2D" },
252 { "quob", 14,24, 0x30ce, "1B2B" },
253 { "quow", 14,24, 0x31ce, "1W2W" },
254 { "quod", 14,24, 0x33ce, "1D2D" },
255 { "rdval", 19,24, 0x0031e,"1A" },
256 { "remb", 14,24, 0x34ce, "1B2B" },
257 { "remw", 14,24, 0x35ce, "1W2W" },
258 { "remd", 14,24, 0x37ce, "1D2D" },
259 { "restore", 8,8, 0x72, "1i" },
260 { "ret", 8,8, 0x12, "1d" },
261 { "reti", 8,8, 0x52, "" },
262 { "rett", 8,8, 0x42, "" },
263 { "rotb", 14,24, 0x004e, "1B2B" },
264 { "rotw", 14,24, 0x014e, "1B2W" },
265 { "rotd", 14,24, 0x034e, "1B2D" },
266 { "roundfb", 14,24, 0x243e, "1F2B" },
267 { "roundfw", 14,24, 0x253e, "1F2W" },
268 { "roundfd", 14,24, 0x273e, "1F2D" },
269 { "roundlb", 14,24, 0x203e, "1L2B" },
270 { "roundlw", 14,24, 0x213e, "1L2W" },
271 { "roundld", 14,24, 0x233e, "1L2D" },
272 { "rxp", 8,8, 0x32, "1d" },
273 { "sCONDb", 7,16, 0x3c, "2B1q" },
274 { "sCONDw", 7,16, 0x3d, "2D1q" },
275 { "sCONDd", 7,16, 0x3f, "2D1q" },
276 { "save", 8,8, 0x62, "1i" },
277 { "sbitb", 14,24, 0x184e, "1B2A" },
278 { "sbitw", 14,24, 0x194e, "1W2A" },
279 { "sbitd", 14,24, 0x1b4e, "1D2A" },
280 { "sbitib", 14,24, 0x1c4e, "1B2A" },
281 { "sbitiw", 14,24, 0x1d4e, "1W2A" },
282 { "sbitid", 14,24, 0x1f4e, "1D2A" },
283 { "setcfg", 15,24, 0x0b0e, "5D1q" },
284 { "sfsr", 14,24, 0x373e, "5D1D" },
285 { "skpsb", 16,16, 0x0c0e, "1i" },
286 { "skpsw", 16,16, 0x0d0e, "1i" },
287 { "skpsd", 16,16, 0x0f0e, "1i" },
288 { "skpst", 16,16, 0x8c0e, "1i" },
289 { "smr", 15,24, 0x0f1e, "2D1q" },
290 { "sprb", 7,16, 0x2c, "2B1q" },
291 { "sprw", 7,16, 0x2d, "2W1q" },
292 { "sprd", 7,16, 0x2f, "2D1q" },
293 { "subf", 14,24, 0x11be, "1F2F" },
294 { "subl", 14,24, 0x10be, "1L2L" },
295 { "subb", 6,16, 0x20, "1B2B" },
296 { "subw", 6,16, 0x21, "1W2W" },
297 { "subd", 6,16, 0x23, "1D2D" },
298 { "subcb", 6,16, 0x30, "1B2B" },
299 { "subcw", 6,16, 0x31, "1W2W" },
300 { "subcd", 6,16, 0x33, "1D2D" },
301 { "subpb", 14,24, 0x2c4e, "1B2B" },
302 { "subpw", 14,24, 0x2d4e, "1W2W" },
303 { "subpd", 14,24, 0x2f4e, "1D2D" },
304 #ifdef NS32K_SVC_IMMED_OPERANDS
305 { "svc", 8,8, 0xe2, "2i1i" }, /* not really, but unix uses it */
307 { "svc", 8,8, 0xe2, "" }, /* not really, but unix uses it */
309 { "tbitb", 6,16, 0x34, "1B2A" },
310 { "tbitw", 6,16, 0x35, "1W2A" },
311 { "tbitd", 6,16, 0x37, "1D2A" },
312 { "truncfb", 14,24, 0x2c3e, "1F2B" },
313 { "truncfw", 14,24, 0x2d3e, "1F2W" },
314 { "truncfd", 14,24, 0x2f3e, "1F2D" },
315 { "trunclb", 14,24, 0x283e, "1L2B" },
316 { "trunclw", 14,24, 0x293e, "1L2W" },
317 { "truncld", 14,24, 0x2b3e, "1L2D" },
318 { "wait", 8,8, 0xb2, "" },
319 { "wrval", 19,24, 0x0071e,"1A" },
320 { "xorb", 6,16, 0x38, "1B2B" },
321 { "xorw", 6,16, 0x39, "1W2W" },
322 { "xord", 6,16, 0x3b, "1D2D" },
325 /* end: ns32k.opcode.h */
This page took 0.042072 seconds and 4 git commands to generate.