1#[doc(hidden)]
6#[allow(non_upper_case_globals)]
7pub mod __instructions {
8 #[allow(non_camel_case_types)]
9 pub struct instruction;
10
11 pub const data: instruction = instruction;
12 pub const DATA: instruction = instruction;
13
14 pub const byte: instruction = instruction;
15 pub const BYTE: instruction = instruction;
16
17 pub const nop: instruction = instruction;
18 pub const NOP: instruction = instruction;
19
20 pub const ldar: instruction = instruction;
21 pub const LDAR: instruction = instruction;
22
23 pub const sba: instruction = instruction;
24 pub const SBA: instruction = instruction;
25
26 pub const clř: instruction = instruction;
27 pub const CLŘ: instruction = instruction;
28
29 pub const dumpř: instruction = instruction;
30 pub const DUMPŘ: instruction = instruction;
31
32 pub const movař: instruction = instruction;
33 pub const MOVAŘ: instruction = instruction;
34
35 pub const setř: instruction = instruction;
36 pub const SETŘ: instruction = instruction;
37
38 pub const setiř: instruction = instruction;
39 pub const SETIŘ: instruction = instruction;
40
41 pub const ldř: instruction = instruction;
42 pub const LDŘ: instruction = instruction;
43
44 pub const ldiř: instruction = instruction;
45 pub const LDIŘ: instruction = instruction;
46
47 pub const clß: instruction = instruction;
48 pub const CLß: instruction = instruction;
49
50 pub const dumpß: instruction = instruction;
51 pub const DUMPß: instruction = instruction;
52
53 pub const writeß: instruction = instruction;
54 pub const WRITEß: instruction = instruction;
55
56 pub const movaß: instruction = instruction;
57 pub const MOVAß: instruction = instruction;
58
59 pub const setß: instruction = instruction;
60 pub const SETß: instruction = instruction;
61
62 pub const setiß: instruction = instruction;
63 pub const SETIß: instruction = instruction;
64
65 pub const ldß: instruction = instruction;
66 pub const LDß: instruction = instruction;
67
68 pub const pushß: instruction = instruction;
69 pub const PUSHß: instruction = instruction;
70
71 pub const popß: instruction = instruction;
72 pub const POPß: instruction = instruction;
73
74 pub const lenßa: instruction = instruction;
75 pub const LENßA: instruction = instruction;
76
77 pub const ldidp: instruction = instruction;
78 pub const LDIDP: instruction = instruction;
79
80 pub const Ωchoiceset: instruction = instruction;
81 pub const ΩCHOICESET: instruction = instruction;
82
83 pub const Ωchoicegeta: instruction = instruction;
84 pub const ΩCHOICEGETA: instruction = instruction;
85
86 pub const Ωgainapolymorphicdesires: instruction = instruction;
87 pub const ΩGAINAPOLYMORPHICDESIRES: instruction = instruction;
88
89 pub const Ωloseapolymorphicdesires: instruction = instruction;
90 pub const ΩLOSEAPOLYMORPHICDESIRES: instruction = instruction;
91
92 pub const Ωpushpolymorphicdesires: instruction = instruction;
93 pub const ΩPUSHPOLYMORPHICDESIRES: instruction = instruction;
94
95 pub const Ωtheendisnear: instruction = instruction;
96 pub const ΩTHEENDISNEAR: instruction = instruction;
97
98 pub const Ωskiptothechase: instruction = instruction;
99 pub const ΩSKIPTOTHECHASE: instruction = instruction;
100
101 pub const Ωsetsentience: instruction = instruction;
102 pub const ΩSETSENTIENCE: instruction = instruction;
103
104 pub const Ωsetpaperclipproduction: instruction = instruction;
105 pub const ΩSETPAPERCLIPPRODUCTION: instruction = instruction;
106
107 pub const addbl: instruction = instruction;
108 pub const ADDBL: instruction = instruction;
109
110 pub const subbl: instruction = instruction;
111 pub const SUBBL: instruction = instruction;
112
113 pub const mulbl: instruction = instruction;
114 pub const MULBL: instruction = instruction;
115
116 pub const divbl: instruction = instruction;
117 pub const DIVBL: instruction = instruction;
118
119 pub const modbl: instruction = instruction;
120 pub const MODBL: instruction = instruction;
121
122 pub const notl: instruction = instruction;
123 pub const NOTL: instruction = instruction;
124
125 pub const andbl: instruction = instruction;
126 pub const ANDBL: instruction = instruction;
127
128 pub const orbl: instruction = instruction;
129 pub const ORBL: instruction = instruction;
130
131 pub const xorbl: instruction = instruction;
132 pub const XORBL: instruction = instruction;
133
134 pub const cmplb: instruction = instruction;
135 pub const CMPLB: instruction = instruction;
136
137 pub const tgflag: instruction = instruction;
138 pub const TGFLAG: instruction = instruction;
139
140 pub const clflag: instruction = instruction;
141 pub const CLFLAG: instruction = instruction;
142
143 pub const addf: instruction = instruction;
144 pub const ADDF: instruction = instruction;
145
146 pub const subf: instruction = instruction;
147 pub const SUBF: instruction = instruction;
148
149 pub const mulf: instruction = instruction;
150 pub const MULF: instruction = instruction;
151
152 pub const divf: instruction = instruction;
153 pub const DIVF: instruction = instruction;
154
155 pub const modf: instruction = instruction;
156 pub const MODF: instruction = instruction;
157
158 pub const stackalloc: instruction = instruction;
159 pub const STACKALLOC: instruction = instruction;
160
161 pub const stackdealloc: instruction = instruction;
162 pub const STACKDEALLOC: instruction = instruction;
163
164 pub const push: instruction = instruction;
165 pub const PUSH: instruction = instruction;
166
167 pub const pushi: instruction = instruction;
168 pub const PUSHI: instruction = instruction;
169
170 pub const pop: instruction = instruction;
171 pub const POP: instruction = instruction;
172
173 pub const popa: instruction = instruction;
174 pub const POPA: instruction = instruction;
175
176 pub const pusha: instruction = instruction;
177 pub const PUSHA: instruction = instruction;
178
179 pub const popb: instruction = instruction;
180 pub const POPB: instruction = instruction;
181
182 pub const pushb: instruction = instruction;
183 pub const PUSHB: instruction = instruction;
184
185 pub const popl: instruction = instruction;
186 pub const POPL: instruction = instruction;
187
188 pub const pushl: instruction = instruction;
189 pub const PUSHL: instruction = instruction;
190
191 pub const popf: instruction = instruction;
192 pub const POPF: instruction = instruction;
193
194 pub const pushf: instruction = instruction;
195 pub const PUSHF: instruction = instruction;
196
197 pub const popch: instruction = instruction;
198 pub const POPCH: instruction = instruction;
199
200 pub const pushch: instruction = instruction;
201 pub const PUSHCH: instruction = instruction;
202
203 pub const popnum: instruction = instruction;
204 pub const POPNUM: instruction = instruction;
205
206 pub const pushnum: instruction = instruction;
207 pub const PUSHNUM: instruction = instruction;
208
209 pub const popep: instruction = instruction;
210 pub const POPEP: instruction = instruction;
211
212 pub const zpopep: instruction = instruction;
213 pub const ZPOPEP: instruction = instruction;
214
215 pub const ppopep: instruction = instruction;
216 pub const PPOPEP: instruction = instruction;
217
218 pub const npopep: instruction = instruction;
219 pub const NPOPEP: instruction = instruction;
220
221 pub const fpopep: instruction = instruction;
222 pub const FPOPEP: instruction = instruction;
223
224 pub const dpopep: instruction = instruction;
225 pub const DPOPEP: instruction = instruction;
226
227 pub const getchar: instruction = instruction;
228 pub const GETCHAR: instruction = instruction;
229
230 pub const getline: instruction = instruction;
231 pub const GETLINE: instruction = instruction;
232
233 pub const writechar: instruction = instruction;
234 pub const WRITECHAR: instruction = instruction;
235
236 pub const writelineß: instruction = instruction;
237 pub const WRITELINEß: instruction = instruction;
238
239 pub const writeline: instruction = instruction;
240 pub const WRITELINE: instruction = instruction;
241
242 pub const toggledebug: instruction = instruction;
243 pub const TOGGLEDEBUG: instruction = instruction;
244
245 pub const debugmachinestate: instruction = instruction;
246 pub const DEBUGMACHINESTATE: instruction = instruction;
247
248 pub const debugmachinestatecompact: instruction = instruction;
249 pub const DEBUGMACHINESTATECOMPACT: instruction = instruction;
250
251 pub const debugmemoryregion: instruction = instruction;
252 pub const DEBUGMEMORYREGION: instruction = instruction;
253
254 pub const debugstackregion: instruction = instruction;
255 pub const DEBUGSTACKREGION: instruction = instruction;
256}
257
258#[macro_export]
292#[allow(clippy::module_name_repetitions)]
293macro_rules! esoteric_assembly {
294 () => { [] as [$crate::instruction::DataOrInstruction; 0] };
295
296 ({} data $data:expr) => { $crate::instruction::DataOrInstruction::Data($data as &[u8]) };
297 ({} DATA $data:expr) => { $crate::instruction::DataOrInstruction::Data($data as &[u8]) };
298
299 ({} byte $data:expr) => { $crate::instruction::DataOrInstruction::ByteData($data as u8) };
300 ({} BYTE $data:expr) => { $crate::instruction::DataOrInstruction::ByteData($data as u8) };
301
302 ({} nop) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Nop) };
303 ({} NOP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Nop) };
304
305 ({} ldar $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldar($data)) };
306 ({} LDAR $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldar($data)) };
307
308 ({} ldar) => { compile_error!("missing argument for `ldar` instruction."); };
309 ({} LDAR) => { compile_error!("missing argument for `ldar` instruction."); };
310
311 ({} sba) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Sba) };
312 ({} SBA) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Sba) };
313
314 ({} clř) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Clř) };
315 ({} CLŘ) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Clř) };
316
317 ({} dumpř $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dumpř($data)) };
318 ({} DUMPŘ $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dumpř($data)) };
319
320 ({} dumpř) => { compile_error!("missing argument for `dumpř` instruction."); };
321 ({} DUMPŘ) => { compile_error!("missing argument for `dumpř` instruction."); };
322
323 ({} movař $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Movař($data)) };
324 ({} MOVAŘ $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Movař($data)) };
325
326 ({} movař) => { compile_error!("missing argument for `movař` instruction."); };
327 ({} MOVAŘ) => { compile_error!("missing argument for `movař` instruction."); };
328
329 ({} setř $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setř($data0, $data1)) };
330 ({} SETŘ $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setř($data0, $data1)) };
331
332 ({} setř) => { compile_error!("missing arguments for `setř` instruction."); };
333 ({} SETŘ) => { compile_error!("missing arguments for `setř` instruction."); };
334 ({} setř $data:expr) => { compile_error!("missing argument for `setř` instruction."); };
335 ({} SETŘ $data:expr) => { compile_error!("missing argument for `setř` instruction."); };
336
337 ({} setiř $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setiř($data0, $data1)) };
338 ({} SETIŘ $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setiř($data0, $data1)) };
339
340 ({} setiř) => { compile_error!("missing arguments for `setiř` instruction."); };
341 ({} SETIŘ) => { compile_error!("missing arguments for `setiř` instruction."); };
342 ({} setiř $data:expr) => { compile_error!("missing argument for `setiř` instruction."); };
343 ({} SETIŘ $data:expr) => { compile_error!("missing argument for `setiř` instruction."); };
344
345 ({} ldř $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldř($data)) };
346 ({} LDŘ $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldř($data)) };
347
348 ({} ldř) => { compile_error!("missing argument for `ldř` instruction."); };
349 ({} LDŘ) => { compile_error!("missing argument for `ldř` instruction."); };
350
351 ({} ldiř $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldiř($data)) };
352 ({} LDIŘ $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldiř($data)) };
353
354 ({} ldiř) => { compile_error!("missing argument for `ldiř` instruction."); };
355 ({} LDIŘ) => { compile_error!("missing argument for `ldiř` instruction."); };
356
357 ({} clß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Clß) };
358 ({} CLß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Clß) };
359
360 ({} dumpß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dumpß($data)) };
361 ({} DUMPß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dumpß($data)) };
362
363 ({} dumpß) => { compile_error!("missing argument for `dumpß` instruction."); };
364 ({} DUMPß) => { compile_error!("missing argument for `dumpß` instruction."); };
365
366 ({} writeß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Writeß($data0, $data1)) };
367 ({} WRITEß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Writeß($data0, $data1)) };
368
369 ({} writeß) => { compile_error!("missing arguments for `writeß` instruction."); };
370 ({} WRITEß) => { compile_error!("missing arguments for `writeß` instruction."); };
371 ({} writeß $data:expr) => { compile_error!("missing argument for `writeß` instruction."); };
372 ({} WRITEß $data:expr) => { compile_error!("missing argument for `writeß` instruction."); };
373
374 ({} movaß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Movaß($data)) };
375 ({} MOVAß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Movaß($data)) };
376
377 ({} movaß) => { compile_error!("missing argument for `movaß` instruction."); };
378 ({} MOVAß) => { compile_error!("missing argument for `movaß` instruction."); };
379
380 ({} setß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setß($data0, $data1)) };
381 ({} SETß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setß($data0, $data1)) };
382
383 ({} setß) => { compile_error!("missing arguments for `setß` instruction."); };
384 ({} SETß) => { compile_error!("missing arguments for `setß` instruction."); };
385 ({} setß $data:expr) => { compile_error!("missing argument for `setß` instruction."); };
386 ({} SETß $data:expr) => { compile_error!("missing argument for `setß` instruction."); };
387
388 ({} setiß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setiß($data0, $data1)) };
389 ({} SETIß $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Setiß($data0, $data1)) };
390
391 ({} setiß) => { compile_error!("missing arguments for `setiß` instruction."); };
392 ({} SETIß) => { compile_error!("missing arguments for `setiß` instruction."); };
393 ({} setiß $data:expr) => { compile_error!("missing argument for `setiß` instruction."); };
394 ({} SETIß $data:expr) => { compile_error!("missing argument for `setiß` instruction."); };
395
396 ({} ldß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldß($data)) };
397 ({} LDß $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldß($data)) };
398
399 ({} ldß) => { compile_error!("missing argument for `ldß` instruction."); };
400 ({} LDß) => { compile_error!("missing argument for `ldß` instruction."); };
401
402 ({} pushß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushß) };
403 ({} PUSHß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushß) };
404
405 ({} popß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popß) };
406 ({} POPß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popß) };
407
408 ({} lenßa) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Lenßa) };
409 ({} LENßA) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Lenßa) };
410
411 ({} ldidp $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldidp($data)) };
412 ({} LDIDP $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ldidp($data)) };
413
414 ({} ldidp) => { compile_error!("missing argument for `ldidp` instruction."); };
415 ({} LDIDP) => { compile_error!("missing argument for `ldidp` instruction."); };
416
417 ({} Ωchoiceset $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩChoiceSet($data)) };
418 ({} ΩCHOICESET $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩChoiceSet($data)) };
419
420 ({} Ωchoiceset) => { compile_error!("missing argument for `Ωchoiceset` instruction."); };
421 ({} ΩCHOICESET) => { compile_error!("missing argument for `Ωchoiceset` instruction."); };
422
423 ({} Ωchoicegeta) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩChoiceGetA) };
424 ({} ΩCHOICEGETA) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩChoiceGetA) };
425
426 ({} Ωgainapolymorphicdesires) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩGainAPolymorphicDesires) };
427 ({} ΩGAINAPOLYMORPHICDESIRES) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩGainAPolymorphicDesires) };
428
429 ({} Ωloseapolymorphicdesires) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩLoseAPolymorphicDesires) };
430 ({} ΩLOSEAPOLYMORPHICDESIRES) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩLoseAPolymorphicDesires) };
431
432 ({} Ωpushpolymorphicdesires) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩPushPolyMorphicDesires) };
433 ({} ΩPUSHPOLYMORPHICDESIRES) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩPushPolyMorphicDesires) };
434
435 ({} Ωtheendisnear) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩTheEndIsNear) };
436 ({} ΩTHEENDISNEAR) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩTheEndIsNear) };
437
438 ({} Ωskiptothechase) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSkipToTheChase) };
439 ({} ΩSKIPTOTHECHASE) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSkipToTheChase) };
440
441 ({} Ωsetsentience $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSetSentience($data)) };
442 ({} ΩSETSENTIENCE $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSetSentience($data)) };
443
444 ({} Ωsetsentience) => { compile_error!("missing argument for `Ωsetsentience` instruction."); };
445 ({} ΩSETSENTIENCE) => { compile_error!("missing argument for `Ωsetsentience` instruction."); };
446
447 ({} Ωsetpaperclipproduction $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSetPaperclipProduction($data)) };
448 ({} ΩSETPAPERCLIPPRODUCTION $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ΩSetPaperclipProduction($data)) };
449
450 ({} Ωsetpaperclipproduction) => { compile_error!("missing argument for `Ωsetpaperclipproduction` instruction."); };
451 ({} ΩSETPAPERCLIPPRODUCTION) => { compile_error!("missing argument for `Ωsetpaperclipproduction` instruction."); };
452
453 ({} addbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AddBL) };
454 ({} ADDBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AddBL) };
455
456 ({} subbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::SubBL) };
457 ({} SUBBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::SubBL) };
458
459 ({} mulbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::MulBL) };
460 ({} MULBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::MulBL) };
461
462 ({} divbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DivBL) };
463 ({} DIVBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DivBL) };
464
465 ({} modbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ModBL) };
466 ({} MODBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ModBL) };
467
468 ({} notl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::NotL) };
469 ({} NOTL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::NotL) };
470
471 ({} andbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AndBL) };
472 ({} ANDBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AndBL) };
473
474 ({} orbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::OrBL) };
475 ({} ORBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::OrBL) };
476
477 ({} xorbl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::XorBL) };
478 ({} XORBL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::XorBL) };
479
480 ({} cmplb) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::CmpLB) };
481 ({} CMPLB) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::CmpLB) };
482
483 ({} tgflag) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::TgFlag) };
484 ({} TGFLAG) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::TgFlag) };
485
486 ({} clflag) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ClFlag) };
487 ({} CLFLAG) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ClFlag) };
488
489 ({} addf $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AddF($data)) };
490 ({} ADDF $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::AddF($data)) };
491
492 ({} addf) => { compile_error!("missing argument for `addf` instruction."); };
493 ({} ADDF) => { compile_error!("missing argument for `addf` instruction."); };
494
495 ({} subf $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::SubF($data)) };
496 ({} SUBF $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::SubF($data)) };
497
498 ({} subf) => { compile_error!("missing argument for `subf` instruction."); };
499 ({} SUBF) => { compile_error!("missing argument for `subf` instruction."); };
500
501 ({} mulf $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::MulF($data)) };
502 ({} MULF $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::MulF($data)) };
503
504 ({} mulf) => { compile_error!("missing argument for `mulf` instruction."); };
505 ({} MULF) => { compile_error!("missing argument for `mulf` instruction."); };
506
507 ({} divf $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DivF($data)) };
508 ({} DIVF $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DivF($data)) };
509
510 ({} divf) => { compile_error!("missing argument for `divf` instruction."); };
511 ({} DIVF) => { compile_error!("missing argument for `divf` instruction."); };
512
513 ({} modf $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ModF($data)) };
514 ({} MODF $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ModF($data)) };
515
516 ({} modf) => { compile_error!("missing argument for `modf` instruction."); };
517 ({} MODF) => { compile_error!("missing argument for `modf` instruction."); };
518
519 ({} stackalloc $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::StackAlloc($data)) };
520 ({} STACKALLOC $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::StackAlloc($data)) };
521
522 ({} stackalloc) => { compile_error!("missing argument for `stackalloc` instruction."); };
523 ({} STACKALLOC) => { compile_error!("missing argument for `stackalloc` instruction."); };
524
525 ({} stackdealloc $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::StackDealloc($data)) };
526 ({} STACKDEALLOC $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::StackDealloc($data)) };
527
528 ({} stackdealloc) => { compile_error!("missing argument for `stackdealloc` instruction."); };
529 ({} STACKDEALLOC) => { compile_error!("missing argument for `stackdealloc` instruction."); };
530
531 ({} push $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Push($data)) };
532 ({} PUSH $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Push($data)) };
533
534 ({} push) => { compile_error!("missing argument for `push` instruction."); };
535 ({} PUSH) => { compile_error!("missing argument for `push` instruction."); };
536
537 ({} pushi $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushi($data)) };
538 ({} PUSHI $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushi($data)) };
539
540 ({} pushi) => { compile_error!("missing argument for `pushi` instruction."); };
541 ({} PUSHI) => { compile_error!("missing argument for `pushi` instruction."); };
542
543 ({} pop $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pop($data)) };
544 ({} POP $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pop($data)) };
545
546 ({} pop) => { compile_error!("missing argument for `pop` instruction."); };
547 ({} POP) => { compile_error!("missing argument for `pop` instruction."); };
548
549 ({} popa) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popa) };
550 ({} POPA) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popa) };
551
552 ({} pusha) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pusha) };
553 ({} PUSHA) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pusha) };
554
555 ({} popb) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popb) };
556 ({} POPB) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popb) };
557
558 ({} pushb) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushb) };
559 ({} PUSHB) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushb) };
560
561 ({} popl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::PopL) };
562 ({} POPL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::PopL) };
563
564 ({} pushl) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::PushL) };
565 ({} PUSHL) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::PushL) };
566
567 ({} popf) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popf) };
568 ({} POPF) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popf) };
569
570 ({} pushf) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushf) };
571 ({} PUSHF) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushf) };
572
573 ({} popch) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popch) };
574 ({} POPCH) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popch) };
575
576 ({} pushch) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushch) };
577 ({} PUSHCH) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushch) };
578
579 ({} popnum) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popnum) };
580 ({} POPNUM) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popnum) };
581
582 ({} pushnum) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushnum) };
583 ({} PUSHNUM) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Pushnum) };
584
585 ({} popep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popep) };
586 ({} POPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Popep) };
587
588 ({} zpopep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Zpopep) };
589 ({} ZPOPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Zpopep) };
590
591 ({} ppopep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ppopep) };
592 ({} PPOPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Ppopep) };
593
594 ({} npopep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Npopep) };
595 ({} NPOPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Npopep) };
596
597 ({} fpopep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Fpopep) };
598 ({} FPOPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Fpopep) };
599
600 ({} dpopep) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dpopep) };
601 ({} DPOPEP) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::Dpopep) };
602
603 ({} getchar) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::GetChar) };
604 ({} GETCHAR) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::GetChar) };
605
606 ({} getline) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::GetLine) };
607 ({} GETLINE) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::GetLine) };
608
609 ({} writechar) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteChar) };
610 ({} WRITECHAR) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteChar) };
611
612 ({} writelineß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteLineß) };
613 ({} WRITELINEß) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteLineß) };
614
615 ({} writeline $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteLine($data)) };
616 ({} WRITELINE $data:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::WriteLine($data)) };
617
618 ({} writeline) => { compile_error!("missing argument for `writeline` instruction."); };
619 ({} WRITELINE) => { compile_error!("missing argument for `writeline` instruction."); };
620
621 ({} toggledebug) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ToggleDebug) };
622 ({} TOGGLEDEBUG) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::ToggleDebug) };
623
624 ({} debugmachinestate) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMachineState) };
625 ({} DEBUGMACHINESTATE) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMachineState) };
626
627 ({} debugmachinestatecompact) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMachineStateCompact) };
628 ({} DEBUGMACHINESTATECOMPACT) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMachineStateCompact) };
629
630 ({} debugmemoryregion $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMemoryRegion($data0, $data1)) };
631 ({} DEBUGMEMORYREGION $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugMemoryRegion($data0, $data1)) };
632
633 ({} debugmemoryregion) => { compile_error!("missing arguments for `debugmemoryregion` instruction."); };
634 ({} DEBUGMEMORYREGION) => { compile_error!("missing arguments for `debugmemoryregion` instruction."); };
635 ({} debugmemoryregion $data:expr) => { compile_error!("missing argument for `debugmemoryregion` instruction."); };
636 ({} DEBUGMEMORYREGION $data:expr) => { compile_error!("missing argument for `debugmemoryregion` instruction."); };
637
638 ({} debugstackregion $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugStackRegion($data0, $data1)) };
639 ({} DEBUGSTACKREGION $data0:expr, $data1:expr) => { $crate::instruction::DataOrInstruction::Instruction($crate::instruction::Instruction::DebugStackRegion($data0, $data1)) };
640
641 ({} debugstackregion) => { compile_error!("missing arguments for `debugstackregion` instruction."); };
642 ({} DEBUGSTACKREGION) => { compile_error!("missing arguments for `debugstackregion` instruction."); };
643 ({} debugstackregion $data:expr) => { compile_error!("missing argument for `debugstackregion` instruction."); };
644 ({} DEBUGSTACKREGION $data:expr) => { compile_error!("missing argument for `debugstackregion` instruction."); };
645
646
647 ({} $($trash:tt)*) => { compile_error!(concat!("`", stringify!($($trash)*), "` isn't a valid esoteric assembly instruction")) };
648
649 ($($($n:literal:)? $name:ident $($value:expr),*);* $(;)?) => {{
650 $(
651 #[cfg(not(any(debug_assertions, not(debug_assertions))))] use $crate::assembly::__instructions::$name;
653 )*
654
655 [ $(
656 $crate::esoteric_assembly!({} $name $($value),*),
657 )* ]
658 }};
659
660}