ic10c-node 2.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1551 @@
1
+ // Copyright (c) 2026. All rights reserved.
2
+ // This source code is licensed under the CC BY-NC-SA
3
+ // (Creative Commons Attribution-NonCommercial-NoDerivatives) License, By Xiao Songtao.
4
+ // This software is protected by copyright law. Reproduction, distribution, or use for commercial
5
+ // purposes is prohibited without the author's permission. If you have any questions or require
6
+ // permission, please contact the author: edocsitahw@qq.com
7
+
8
+ /**
9
+ * @file ternary.d.ts
10
+ * @author edocsitahw
11
+ * @version 1.1
12
+ * @date 2026/07/22 15:45
13
+ * @desc
14
+ * @copyright CC BY-NC-SA 2026. All rights reserved.
15
+ * */
16
+ import {
17
+ ErrorNode,
18
+ RegisterOrIdentifierNode,
19
+ OperandNode,
20
+ DeviceReferenceNode,
21
+ LogicTypeNode,
22
+ ReagentModeNode,
23
+ OperandType
24
+ } from "../ast";
25
+ import {BinaryInstruction} from "./binary";
26
+
27
+
28
+ // 三元指令(3 个操作数)
29
+
30
+ export interface TernaryInstruction extends BinaryInstruction {
31
+ type3: OperandType;
32
+ }
33
+
34
+
35
+ /**
36
+ * @summary 三元指令概述
37
+ *
38
+ * @desc 三元指令是包含三个操作数的指令。
39
+ * 根据操作数类型可分为以下几类:
40
+ * - **TernaryInstruction_RI_O_O**:寄存器/标识符 + 操作数 + 操作数
41
+ * - **TernaryInstruction_RI_DR_O**:寄存器/标识符 + 设备引用 + 操作数
42
+ * - **TernaryInstruction_DR_O_O**:设备引用 + 操作数 + 操作数
43
+ * - **TernaryInstruction_RI_DR_LT**:寄存器/标识符 + 设备引用 + 逻辑类型
44
+ * - **TernaryInstruction_RI_DR_RM**:寄存器/标识符 + 设备引用 + 试剂模式
45
+ * - **TernaryInstruction_DR_LT_RI**:设备引用 + 逻辑类型 + 寄存器/标识符
46
+ * - **TernaryInstruction_O_LT_RI**:操作数 + 逻辑类型 + 寄存器/标识符
47
+ * - **TernaryInstruction_DR_LT_O**:设备引用 + 逻辑类型 + 操作数
48
+ * - **TernaryInstruction_O_O_O**:操作数 + 操作数 + 操作数
49
+ *
50
+ * @elseif en
51
+ * @summary Ternary Instructions Overview
52
+ *
53
+ * @desc Ternary instructions contain three operands.
54
+ * They are categorized by operand types:
55
+ * - **TernaryInstruction_RI_O_O**: Register/identifier + operand + operand
56
+ * - **TernaryInstruction_RI_DR_O**: Register/identifier + device reference + operand
57
+ * - **TernaryInstruction_DR_O_O**: Device reference + operand + operand
58
+ * - **TernaryInstruction_RI_DR_LT**: Register/identifier + device reference + logic type
59
+ * - **TernaryInstruction_RI_DR_RM**: Register/identifier + device reference + reagent mode
60
+ * - **TernaryInstruction_DR_LT_RI**: Device reference + logic type + register/identifier
61
+ * - **TernaryInstruction_O_LT_RI**: Operand + logic type + register/identifier
62
+ * - **TernaryInstruction_DR_LT_O**: Device reference + logic type + operand
63
+ * - **TernaryInstruction_O_O_O**: Operand + operand + operand
64
+ */
65
+
66
+ /**
67
+ * @summary 含 RegisterOrIdentifier + Operand + Operand 操作数的三元指令基类
68
+ *
69
+ * @desc 第一个操作数为寄存器或标识符,第二、三个为通用操作数。
70
+ * @elseif en
71
+ * @summary Base interface for ternary instructions with RegisterOrIdentifier + Operand + Operand operands
72
+ *
73
+ * @desc First operand is a register or identifier, second and third are general operands.
74
+ *
75
+ * @public
76
+ */
77
+ interface TernaryInstruction_RI_O_O extends TernaryInstruction {
78
+ operand1: RegisterOrIdentifierNode;
79
+ operand2: OperandNode;
80
+ operand3: OperandNode;
81
+ }
82
+
83
+
84
+ /**
85
+ * @summary ADD(加法)指令节点
86
+ *
87
+ * @desc 将第二个和第三个操作数相加,结果存入目标寄存器。
88
+ * @elseif en
89
+ * @summary ADD (Addition) instruction node
90
+ *
91
+ * @desc Adds the second and third operands, storing the result in the target register.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // ADD r0 r1 r2
96
+ * // 计算 r1 + r2 并存入 r0
97
+ * ```
98
+ *
99
+ * @public
100
+ */
101
+ export interface AddInstructionNode extends TernaryInstruction_RI_O_O {
102
+ type: "addInstruction";
103
+ }
104
+
105
+
106
+ /**
107
+ * @summary ATAN2(反正切2)指令节点
108
+ *
109
+ * @desc 计算第二个操作数除以第三个操作数的反正切值(弧度制)。
110
+ * @elseif en
111
+ * @summary ATAN2 (Arc Tangent 2) instruction node
112
+ *
113
+ * @desc Computes the arc tangent of the second operand divided by the third operand (in radians).
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * // ATAN2 r0 r1 r2
118
+ * // 计算 atan2(r1, r2) 并存入 r0
119
+ * ```
120
+ *
121
+ * @public
122
+ */
123
+ export interface Atan2InstructionNode extends TernaryInstruction_RI_O_O {
124
+ type: "atan2Instruction";
125
+ }
126
+
127
+
128
+ /**
129
+ * @summary DIV(除法)指令节点
130
+ *
131
+ * @desc 将第二个操作数除以第三个操作数,结果存入目标寄存器。
132
+ * @elseif en
133
+ * @summary DIV (Division) instruction node
134
+ *
135
+ * @desc Divides the second operand by the third operand, storing the result in the target register.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // DIV r0 r1 r2
140
+ * // 计算 r1 / r2 并存入 r0
141
+ * ```
142
+ *
143
+ * @public
144
+ */
145
+ export interface DivInstructionNode extends TernaryInstruction_RI_O_O {
146
+ type: "divInstruction";
147
+ }
148
+
149
+
150
+ /**
151
+ * @summary MAX(最大值)指令节点
152
+ *
153
+ * @desc 比较第二个和第三个操作数,将较大值存入目标寄存器。
154
+ * @elseif en
155
+ * @summary MAX (Maximum) instruction node
156
+ *
157
+ * @desc Compares the second and third operands, storing the larger value in the target register.
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // MAX r0 r1 r2
162
+ * // 将 r1 和 r2 中的较大值存入 r0
163
+ * ```
164
+ *
165
+ * @public
166
+ */
167
+ export interface MaxInstructionNode extends TernaryInstruction_RI_O_O {
168
+ type: "maxInstruction";
169
+ }
170
+
171
+
172
+ /**
173
+ * @summary MIN(最小值)指令节点
174
+ *
175
+ * @desc 比较第二个和第三个操作数,将较小值存入目标寄存器。
176
+ * @elseif en
177
+ * @summary MIN (Minimum) instruction node
178
+ *
179
+ * @desc Compares the second and third operands, storing the smaller value in the target register.
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * // MIN r0 r1 r2
184
+ * // 将 r1 和 r2 中的较小值存入 r0
185
+ * ```
186
+ *
187
+ * @public
188
+ */
189
+ export interface MinInstructionNode extends TernaryInstruction_RI_O_O {
190
+ type: "minInstruction";
191
+ }
192
+
193
+
194
+ /**
195
+ * @summary MOD(取模)指令节点
196
+ *
197
+ * @desc 计算第二个操作数除以第三个操作数的余数。
198
+ * @elseif en
199
+ * @summary MOD (Modulo) instruction node
200
+ *
201
+ * @desc Computes the remainder of the second operand divided by the third operand.
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * // MOD r0 r1 r2
206
+ * // 计算 r1 % r2 并存入 r0
207
+ * ```
208
+ *
209
+ * @public
210
+ */
211
+ export interface ModInstructionNode extends TernaryInstruction_RI_O_O {
212
+ type: "modInstruction";
213
+ }
214
+
215
+
216
+ /**
217
+ * @summary MUL(乘法)指令节点
218
+ *
219
+ * @desc 将第二个和第三个操作数相乘,结果存入目标寄存器。
220
+ * @elseif en
221
+ * @summary MUL (Multiplication) instruction node
222
+ *
223
+ * @desc Multiplies the second and third operands, storing the result in the target register.
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * // MUL r0 r1 r2
228
+ * // 计算 r1 * r2 并存入 r0
229
+ * ```
230
+ *
231
+ * @public
232
+ */
233
+ export interface MulInstructionNode extends TernaryInstruction_RI_O_O {
234
+ type: "mulInstruction";
235
+ }
236
+
237
+
238
+ /**
239
+ * @summary POW(幂运算)指令节点
240
+ *
241
+ * @desc 计算第二个操作数的第三次操作数次幂。
242
+ * @elseif en
243
+ * @summary POW (Power) instruction node
244
+ *
245
+ * @desc Computes the second operand raised to the power of the third operand.
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * // POW r0 r1 r2
250
+ * // 计算 r1 ^ r2 并存入 r0
251
+ * ```
252
+ *
253
+ * @public
254
+ */
255
+ export interface PowInstructionNode extends TernaryInstruction_RI_O_O {
256
+ type: "powInstruction";
257
+ }
258
+
259
+
260
+ /**
261
+ * @summary AND(按位与)指令节点
262
+ *
263
+ * @desc 对第二个和第三个操作数进行按位与运算。
264
+ * @elseif en
265
+ * @summary AND (Bitwise AND) instruction node
266
+ *
267
+ * @desc Performs bitwise AND operation on the second and third operands.
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * // AND r0 r1 r2
272
+ * // 计算 r1 & r2 并存入 r0
273
+ * ```
274
+ *
275
+ * @public
276
+ */
277
+ export interface AndInstructionNode extends TernaryInstruction_RI_O_O {
278
+ type: "andInstruction";
279
+ }
280
+
281
+
282
+ /**
283
+ * @summary NOR(按位或非)指令节点
284
+ *
285
+ * @desc 对第二个和第三个操作数进行按位或运算,然后取反。
286
+ * @elseif en
287
+ * @summary NOR (Bitwise NOR) instruction node
288
+ *
289
+ * @desc Performs bitwise OR operation on the second and third operands, then negates the result.
290
+ *
291
+ * @example
292
+ * ```typescript
293
+ * // NOR r0 r1 r2
294
+ * // 计算 ~(r1 | r2) 并存入 r0
295
+ * ```
296
+ *
297
+ * @public
298
+ */
299
+ export interface NorInstructionNode extends TernaryInstruction_RI_O_O {
300
+ type: "norInstruction";
301
+ }
302
+
303
+
304
+ /**
305
+ * @summary OR(按位或)指令节点
306
+ *
307
+ * @desc 对第二个和第三个操作数进行按位或运算。
308
+ * @elseif en
309
+ * @summary OR (Bitwise OR) instruction node
310
+ *
311
+ * @desc Performs bitwise OR operation on the second and third operands.
312
+ *
313
+ * @example
314
+ * ```typescript
315
+ * // OR r0 r1 r2
316
+ * // 计算 r1 | r2 并存入 r0
317
+ * ```
318
+ *
319
+ * @public
320
+ */
321
+ export interface OrInstructionNode extends TernaryInstruction_RI_O_O {
322
+ type: "orInstruction";
323
+ }
324
+
325
+
326
+ /**
327
+ * @summary SLA(算术左移)指令节点
328
+ *
329
+ * @desc 将第二个操作数左移第三个操作数指定的位数(算术左移)。
330
+ * @elseif en
331
+ * @summary SLA (Shift Left Arithmetic) instruction node
332
+ *
333
+ * @desc Arithmetically shifts the second operand left by the number of bits specified by the third operand.
334
+ *
335
+ * @example
336
+ * ```typescript
337
+ * // SLA r0 r1 r2
338
+ * // 将 r1 左移 r2 位并存入 r0
339
+ * ```
340
+ *
341
+ * @public
342
+ */
343
+ export interface SlaInstructionNode extends TernaryInstruction_RI_O_O {
344
+ type: "slaInstruction";
345
+ }
346
+
347
+
348
+ /**
349
+ * @summary SLL(逻辑左移)指令节点
350
+ *
351
+ * @desc 将第二个操作数左移第三个操作数指定的位数(逻辑左移)。
352
+ * @elseif en
353
+ * @summary SLL (Shift Left Logical) instruction node
354
+ *
355
+ * @desc Logically shifts the second operand left by the number of bits specified by the third operand.
356
+ *
357
+ * @example
358
+ * ```typescript
359
+ * // SLL r0 r1 r2
360
+ * // 将 r1 左移 r2 位并存入 r0
361
+ * ```
362
+ *
363
+ * @public
364
+ */
365
+ export interface SllInstructionNode extends TernaryInstruction_RI_O_O {
366
+ type: "sllInstruction";
367
+ }
368
+
369
+
370
+ /**
371
+ * @summary SRA(算术右移)指令节点
372
+ *
373
+ * @desc 将第二个操作数右移第三个操作数指定的位数(算术右移,符号位扩展)。
374
+ * @elseif en
375
+ * @summary SRA (Shift Right Arithmetic) instruction node
376
+ *
377
+ * @desc Arithmetically shifts the second operand right by the number of bits specified by the third operand (sign-extended).
378
+ *
379
+ * @example
380
+ * ```typescript
381
+ * // SRA r0 r1 r2
382
+ * // 将 r1 右移 r2 位并存入 r0
383
+ * ```
384
+ *
385
+ * @public
386
+ */
387
+ export interface SraInstructionNode extends TernaryInstruction_RI_O_O {
388
+ type: "sraInstruction";
389
+ }
390
+
391
+
392
+ /**
393
+ * @summary SRL(逻辑右移)指令节点
394
+ *
395
+ * @desc 将第二个操作数右移第三个操作数指定的位数(逻辑右移,零扩展)。
396
+ * @elseif en
397
+ * @summary SRL (Shift Right Logical) instruction node
398
+ *
399
+ * @desc Logically shifts the second operand right by the number of bits specified by the third operand (zero-extended).
400
+ *
401
+ * @example
402
+ * ```typescript
403
+ * // SRL r0 r1 r2
404
+ * // 将 r1 右移 r2 位并存入 r0
405
+ * ```
406
+ *
407
+ * @public
408
+ */
409
+ export interface SrlInstructionNode extends TernaryInstruction_RI_O_O {
410
+ type: "srlInstruction";
411
+ }
412
+
413
+
414
+ /**
415
+ * @summary XOR(按位异或)指令节点
416
+ *
417
+ * @desc 对第二个和第三个操作数进行按位异或运算。
418
+ * @elseif en
419
+ * @summary XOR (Bitwise XOR) instruction node
420
+ *
421
+ * @desc Performs bitwise XOR operation on the second and third operands.
422
+ *
423
+ * @example
424
+ * ```typescript
425
+ * // XOR r0 r1 r2
426
+ * // 计算 r1 ^ r2 并存入 r0
427
+ * ```
428
+ *
429
+ * @public
430
+ */
431
+ export interface XorInstructionNode extends TernaryInstruction_RI_O_O {
432
+ type: "xorInstruction";
433
+ }
434
+
435
+
436
+ /**
437
+ * @summary SAPZ(Set if And Predicate Zero)指令节点
438
+ *
439
+ * @desc 如果第二个和第三个操作数的按位与结果为零,则将目标寄存器设置为1。
440
+ * @elseif en
441
+ * @summary SAPZ (Set if And Predicate Zero) instruction node
442
+ *
443
+ * @desc Sets the target register to 1 if the bitwise AND of the second and third operands is zero.
444
+ *
445
+ * @example
446
+ * ```typescript
447
+ * // SAPZ r0 r1 r2
448
+ * // 如果 (r1 & r2) == 0,则 r0 = 1
449
+ * ```
450
+ *
451
+ * @public
452
+ */
453
+ export interface SapzInstructionNode extends TernaryInstruction_RI_O_O {
454
+ type: "sapzInstruction";
455
+ }
456
+
457
+
458
+ /**
459
+ * @summary SNAZ(Set if And Predicate Non-Zero)指令节点
460
+ *
461
+ * @desc 如果第二个和第三个操作数的按位与结果非零,则将目标寄存器设置为1。
462
+ * @elseif en
463
+ * @summary SNAZ (Set if And Predicate Non-Zero) instruction node
464
+ *
465
+ * @desc Sets the target register to 1 if the bitwise AND of the second and third operands is non-zero.
466
+ *
467
+ * @example
468
+ * ```typescript
469
+ * // SNAZ r0 r1 r2
470
+ * // 如果 (r1 & r2) != 0,则 r0 = 1
471
+ * ```
472
+ *
473
+ * @public
474
+ */
475
+ export interface SnazInstructionNode extends TernaryInstruction_RI_O_O {
476
+ type: "snazInstruction";
477
+ }
478
+
479
+
480
+ /**
481
+ * @summary SEQ(Set if EQual)指令节点
482
+ *
483
+ * @desc 如果第二个操作数等于第三个操作数,则将目标寄存器设置为1。
484
+ * @elseif en
485
+ * @summary SEQ (Set if EQual) instruction node
486
+ *
487
+ * @desc Sets the target register to 1 if the second operand equals the third operand.
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * // SEQ r0 r1 r2
492
+ * // 如果 r1 == r2,则 r0 = 1
493
+ * ```
494
+ *
495
+ * @public
496
+ */
497
+ export interface SeqInstructionNode extends TernaryInstruction_RI_O_O {
498
+ type: "seqInstruction";
499
+ }
500
+
501
+
502
+ /**
503
+ * @summary SNE(Set if Not Equal)指令节点
504
+ *
505
+ * @desc 如果第二个操作数不等于第三个操作数,则将目标寄存器设置为1。
506
+ * @elseif en
507
+ * @summary SNE (Set if Not Equal) instruction node
508
+ *
509
+ * @desc Sets the target register to 1 if the second operand does not equal the third operand.
510
+ *
511
+ * @example
512
+ * ```typescript
513
+ * // SNE r0 r1 r2
514
+ * // 如果 r1 != r2,则 r0 = 1
515
+ * ```
516
+ *
517
+ * @public
518
+ */
519
+ export interface SneInstructionNode extends TernaryInstruction_RI_O_O {
520
+ type: "sneInstruction";
521
+ }
522
+
523
+
524
+ /**
525
+ * @summary SGE(Set if Greater than or Equal)指令节点
526
+ *
527
+ * @desc 如果第二个操作数大于等于第三个操作数,则将目标寄存器设置为1。
528
+ * @elseif en
529
+ * @summary SGE (Set if Greater than or Equal) instruction node
530
+ *
531
+ * @desc Sets the target register to 1 if the second operand is greater than or equal to the third operand.
532
+ *
533
+ * @example
534
+ * ```typescript
535
+ * // SGE r0 r1 r2
536
+ * // 如果 r1 >= r2,则 r0 = 1
537
+ * ```
538
+ *
539
+ * @public
540
+ */
541
+ export interface SgeInstructionNode extends TernaryInstruction_RI_O_O {
542
+ type: "sgeInstruction";
543
+ }
544
+
545
+
546
+ /**
547
+ * @summary SGT(Set if Greater Than)指令节点
548
+ *
549
+ * @desc 如果第二个操作数大于第三个操作数,则将目标寄存器设置为1。
550
+ * @elseif en
551
+ * @summary SGT (Set if Greater Than) instruction node
552
+ *
553
+ * @desc Sets the target register to 1 if the second operand is greater than the third operand.
554
+ *
555
+ * @example
556
+ * ```typescript
557
+ * // SGT r0 r1 r2
558
+ * // 如果 r1 > r2,则 r0 = 1
559
+ * ```
560
+ *
561
+ * @public
562
+ */
563
+ export interface SgtInstructionNode extends TernaryInstruction_RI_O_O {
564
+ type: "sgtInstruction";
565
+ }
566
+
567
+
568
+ /**
569
+ * @summary SLE(Set if Less than or Equal)指令节点
570
+ *
571
+ * @desc 如果第二个操作数小于等于第三个操作数,则将目标寄存器设置为1。
572
+ * @elseif en
573
+ * @summary SLE (Set if Less than or Equal) instruction node
574
+ *
575
+ * @desc Sets the target register to 1 if the second operand is less than or equal to the third operand.
576
+ *
577
+ * @example
578
+ * ```typescript
579
+ * // SLE r0 r1 r2
580
+ * // 如果 r1 <= r2,则 r0 = 1
581
+ * ```
582
+ *
583
+ * @public
584
+ */
585
+ export interface SleInstructionNode extends TernaryInstruction_RI_O_O {
586
+ type: "sleInstruction";
587
+ }
588
+
589
+
590
+ /**
591
+ * @summary SLT(Set if Less Than)指令节点
592
+ *
593
+ * @desc 如果第二个操作数小于第三个操作数,则将目标寄存器设置为1。
594
+ * @elseif en
595
+ * @summary SLT (Set if Less Than) instruction node
596
+ *
597
+ * @desc Sets the target register to 1 if the second operand is less than the third operand.
598
+ *
599
+ * @example
600
+ * ```typescript
601
+ * // SLT r0 r1 r2
602
+ * // 如果 r1 < r2,则 r0 = 1
603
+ * ```
604
+ *
605
+ * @public
606
+ */
607
+ export interface SltInstructionNode extends TernaryInstruction_RI_O_O {
608
+ type: "sltInstruction";
609
+ }
610
+
611
+
612
+ /**
613
+ * @summary 含 RegisterOrIdentifier + DeviceReference + Operand 操作数的三元指令基类
614
+ *
615
+ * @desc 第一个操作数为寄存器或标识符,第二个为设备引用,第三个为通用操作数。
616
+ * @elseif en
617
+ * @summary Base interface for ternary instructions with RegisterOrIdentifier + DeviceReference + Operand operands
618
+ *
619
+ * @desc First operand is a register or identifier, second is a device reference, third is a general operand.
620
+ *
621
+ * @public
622
+ */
623
+ interface TernaryInstruction_RI_DR_O extends TernaryInstruction {
624
+ operand1: RegisterOrIdentifierNode;
625
+ operand2: DeviceReferenceNode;
626
+ operand3: OperandNode;
627
+ }
628
+
629
+
630
+ /**
631
+ * @summary GET(获取设备属性)指令节点
632
+ *
633
+ * @desc 从设备获取指定类型的属性值到目标寄存器。
634
+ * @elseif en
635
+ * @summary GET (Get Device Property) instruction node
636
+ *
637
+ * @desc Gets the property of a specified type from the device into the target register.
638
+ *
639
+ * @example
640
+ * ```typescript
641
+ * // GET r0 console1 Setting
642
+ * // 从 console1 获取 Setting 属性到 r0
643
+ * ```
644
+ *
645
+ * @public
646
+ */
647
+ export interface GetInstructionNode extends TernaryInstruction_RI_DR_O {
648
+ type: "getInstruction";
649
+ }
650
+
651
+
652
+ /**
653
+ * @summary RMAP(重新映射设备)指令节点
654
+ *
655
+ * @desc 重新映射目标设备到源设备。
656
+ * @elseif en
657
+ * @summary RMAP (ReMAP Device) instruction node
658
+ *
659
+ * @desc Remaps the target device to the source device.
660
+ *
661
+ * @example
662
+ * ```typescript
663
+ * // RMAP r0 console1 console2
664
+ * // 将 console1 重新映射到 console2
665
+ * ```
666
+ *
667
+ * @public
668
+ */
669
+ export interface RmapInstructionNode extends TernaryInstruction_RI_DR_O {
670
+ type: "rmapInstruction";
671
+ }
672
+
673
+
674
+ /**
675
+ * @summary 含 DeviceReference + Operand + Operand 操作数的三元指令基类
676
+ *
677
+ * @desc 第一个操作数为设备引用,第二、三个为通用操作数。
678
+ * @elseif en
679
+ * @summary Base interface for ternary instructions with DeviceReference + Operand + Operand operands
680
+ *
681
+ * @desc First operand is a device reference, second and third are general operands.
682
+ *
683
+ * @public
684
+ */
685
+ interface TernaryInstruction_DR_O_O extends TernaryInstruction {
686
+ operand1: DeviceReferenceNode;
687
+ operand2: OperandNode;
688
+ operand3: OperandNode;
689
+ }
690
+
691
+
692
+ /**
693
+ * @summary PUT(放置物品到设备)指令节点
694
+ *
695
+ * @desc 将物品从库存放置到目标设备。
696
+ * @elseif en
697
+ * @summary PUT instruction node
698
+ *
699
+ * @desc Places items from inventory to the target device.
700
+ *
701
+ * @example
702
+ * ```typescript
703
+ * // PUT console1 r0 r1
704
+ * // 将物品从 r0 放置到 console1
705
+ * ```
706
+ *
707
+ * @public
708
+ */
709
+ export interface PutInstructionNode extends TernaryInstruction_DR_O_O {
710
+ type: "putInstruction";
711
+ }
712
+
713
+
714
+ /**
715
+ * @summary 含 RegisterOrIdentifier + DeviceReference + LogicType 操作数的三元指令基类
716
+ *
717
+ * @desc 第一个操作数为寄存器或标识符,第二个为设备引用,第三个为逻辑类型。
718
+ * @elseif en
719
+ * @summary Base interface for ternary instructions with RegisterOrIdentifier + DeviceReference + LogicType operands
720
+ *
721
+ * @desc First operand is a register or identifier, second is a device reference, third is a logic type.
722
+ *
723
+ * @public
724
+ */
725
+ interface TernaryInstruction_RI_DR_LT extends TernaryInstruction {
726
+ operand1: RegisterOrIdentifierNode;
727
+ operand2: DeviceReferenceNode;
728
+ operand3: LogicTypeNode;
729
+ }
730
+
731
+
732
+ /**
733
+ * @summary L(读取设备逻辑)指令节点
734
+ *
735
+ * @desc 从目标设备的指定逻辑类型读取数据到寄存器。
736
+ * @elseif en
737
+ * @summary L (Read Device Logic) instruction node
738
+ *
739
+ * @desc Reads data from the target device's specified logic type into the register.
740
+ *
741
+ * @example
742
+ * ```typescript
743
+ * // L r0 console1 Color
744
+ * // 从 console1 读取 Color 数据到 r0
745
+ * ```
746
+ *
747
+ * @public
748
+ */
749
+ export interface LInstructionNode extends TernaryInstruction_RI_DR_LT {
750
+ type: "lInstruction";
751
+ }
752
+
753
+
754
+ /**
755
+ * @summary 含 RegisterOrIdentifier + DeviceReference + ReagentMode 操作数的三元指令基类
756
+ *
757
+ * @desc 第一个操作数为寄存器或标识符,第二个为设备引用,第三个为试剂模式。
758
+ * @elseif en
759
+ * @summary Base interface for ternary instructions with RegisterOrIdentifier + DeviceReference + ReagentMode operands
760
+ *
761
+ * @desc First operand is a register or identifier, second is a device reference, third is a reagent mode.
762
+ *
763
+ * @public
764
+ */
765
+ interface TernaryInstruction_RI_DR_RM extends TernaryInstruction {
766
+ operand1: RegisterOrIdentifierNode;
767
+ operand2: DeviceReferenceNode;
768
+ operand3: ReagentModeNode;
769
+ }
770
+
771
+
772
+ /**
773
+ * @summary LR(读取设备库存试剂)指令节点
774
+ *
775
+ * @desc 从目标设备的库存中读取指定试剂的数量到寄存器。
776
+ * @elseif en
777
+ * @summary LR (Read Device Reagent) instruction node
778
+ *
779
+ * @desc Reads the quantity of a specified reagent from the target device's inventory into the register.
780
+ *
781
+ * @example
782
+ * ```typescript
783
+ * // LR r0 tank1 Water
784
+ * // 从 tank1 读取 Water 试剂数量到 r0
785
+ * ```
786
+ *
787
+ * @public
788
+ */
789
+ export interface LrInstructionNode extends TernaryInstruction_RI_DR_RM {
790
+ type: "lrInstruction";
791
+ }
792
+
793
+
794
+ /**
795
+ * @summary 含 DeviceReference + LogicType + RegisterOrIdentifier 操作数的三元指令基类
796
+ *
797
+ * @desc 第一个操作数为设备引用,第二个为逻辑类型,第三个为寄存器或标识符。
798
+ * @elseif en
799
+ * @summary Base interface for ternary instructions with DeviceReference + LogicType + RegisterOrIdentifier operands
800
+ *
801
+ * @desc First operand is a device reference, second is a logic type, third is a register or identifier.
802
+ *
803
+ * @public
804
+ */
805
+ interface TernaryInstruction_DR_LT_RI extends TernaryInstruction {
806
+ operand1: DeviceReferenceNode;
807
+ operand2: LogicTypeNode;
808
+ operand3: RegisterOrIdentifierNode;
809
+ }
810
+
811
+
812
+ /**
813
+ * @summary S(设置设备逻辑)指令节点
814
+ *
815
+ * @desc 将寄存器的值设置到目标设备的指定逻辑类型属性。
816
+ * @elseif en
817
+ * @summary S (Set Device Logic) instruction node
818
+ *
819
+ * @desc Sets the value of the register to the specified logic type property of the target device.
820
+ *
821
+ * @example
822
+ * ```typescript
823
+ * // S console1 Color r0
824
+ * // 将 r0 的值设置到 console1 的 Color 属性
825
+ * ```
826
+ *
827
+ * @public
828
+ */
829
+ export interface SInstructionNode extends TernaryInstruction_DR_LT_RI {
830
+ type: "sInstruction";
831
+ }
832
+
833
+
834
+ /**
835
+ * @summary 含 Operand + LogicType + RegisterOrIdentifier 操作数的三元指令基类
836
+ *
837
+ * @desc 第一个操作数为通用操作数,第二个为逻辑类型,第三个为寄存器或标识符。
838
+ * @elseif en
839
+ * @summary Base interface for ternary instructions with Operand + LogicType + RegisterOrIdentifier operands
840
+ *
841
+ * @desc First operand is a general operand, second is a logic type, third is a register or identifier.
842
+ *
843
+ * @public
844
+ */
845
+ interface TernaryInstruction_O_LT_RI extends TernaryInstruction {
846
+ operand1: OperandNode;
847
+ operand2: LogicTypeNode;
848
+ operand3: RegisterOrIdentifierNode;
849
+ }
850
+
851
+
852
+ /**
853
+ * @summary SB(设置设备逻辑批量)指令节点
854
+ *
855
+ * @desc 将多个寄存器的值批量设置到目标设备的指定逻辑类型属性。
856
+ * @elseif en
857
+ * @summary SB (Set Device Logic Batch) instruction node
858
+ *
859
+ * @desc Batch sets values from multiple registers to the specified logic type property of the target device.
860
+ *
861
+ * @example
862
+ * ```typescript
863
+ * // SB tank1 Mode r0
864
+ * // 将 r0 的值批量设置到 tank1 的 Mode 属性
865
+ * ```
866
+ *
867
+ * @public
868
+ */
869
+ export interface SbInstructionNode extends TernaryInstruction_O_LT_RI {
870
+ type: "sbInstruction";
871
+ }
872
+
873
+
874
+ /**
875
+ * @summary 含 DeviceReference + LogicType + Operand 操作数的三元指令基类
876
+ *
877
+ * @desc 第一个操作数为设备引用,第二个为逻辑类型,第三个为通用操作数。
878
+ * @elseif en
879
+ * @summary Base interface for ternary instructions with DeviceReference + LogicType + Operand operands
880
+ *
881
+ * @desc First operand is a device reference, second is a logic type, third is a general operand.
882
+ *
883
+ * @public
884
+ */
885
+ interface TernaryInstruction_DR_LT_O extends TernaryInstruction {
886
+ operand1: DeviceReferenceNode;
887
+ operand2: LogicTypeNode;
888
+ operand3: OperandNode;
889
+ }
890
+
891
+
892
+ /**
893
+ * @summary BDNVL(Branches on Device No Variant Leak)指令节点
894
+ *
895
+ * @desc 如果设备没有变体泄漏,则跳转到目标地址。
896
+ * @elseif en
897
+ * @summary BDNVL (Branches on Device No Variant Leak) instruction node
898
+ *
899
+ * @desc Jumps to the target address if the device has no variant leak.
900
+ *
901
+ * @example
902
+ * ```typescript
903
+ * // BDNVL tank1 loop
904
+ * // 如果 tank1 没有变体泄漏,跳转到 loop
905
+ * ```
906
+ *
907
+ * @public
908
+ */
909
+ export interface BdnvlInstructionNode extends TernaryInstruction_DR_LT_O {
910
+ type: "bdnvlInstruction";
911
+ }
912
+
913
+
914
+ /**
915
+ * @summary BDNVS(Branches on Device No Variant Stuck)指令节点
916
+ *
917
+ * @desc 如果设备没有变体卡住,则跳转到目标地址。
918
+ * @elseif en
919
+ * @summary BDNVS (Branches on Device No Variant Stuck) instruction node
920
+ *
921
+ * @desc Jumps to the target address if the device has no variant stuck.
922
+ *
923
+ * @example
924
+ * ```typescript
925
+ * // BDNVS tank1 loop
926
+ * // 如果 tank1 没有变体卡住,跳转到 loop
927
+ * ```
928
+ *
929
+ * @public
930
+ */
931
+ export interface BdnvsInstructionNode extends TernaryInstruction_DR_LT_O {
932
+ type: "bdnvsInstruction";
933
+ }
934
+
935
+
936
+ /**
937
+ * @summary 含 Operand + Operand + Operand 操作数的三元指令基类
938
+ *
939
+ * @desc 三个操作数都为通用操作数类型。
940
+ * @elseif en
941
+ * @summary Base interface for ternary instructions with Operand + Operand + Operand operands
942
+ *
943
+ * @desc All three operands are general operand types.
944
+ *
945
+ * @public
946
+ */
947
+ interface TernaryInstruction_O_O_O extends TernaryInstruction {
948
+ operand1: OperandNode;
949
+ operand2: OperandNode;
950
+ operand3: OperandNode;
951
+ }
952
+
953
+
954
+ /**
955
+ * @summary BEQ(Branch if EQual)指令节点
956
+ *
957
+ * @desc 如果第二个操作数等于第三个操作数,则跳转到第一个操作数指定的目标地址。
958
+ * @elseif en
959
+ * @summary BEQ (Branch if EQual) instruction node
960
+ *
961
+ * @desc Jumps to the target address specified by the first operand if the second operand equals the third operand.
962
+ *
963
+ * @example
964
+ * ```typescript
965
+ * // BEQ loop r0 r1
966
+ * // 如果 r0 == r1,跳转到 loop
967
+ * ```
968
+ *
969
+ * @public
970
+ */
971
+ export interface BeqInstructionNode extends TernaryInstruction_O_O_O {
972
+ type: "beqInstruction";
973
+ }
974
+
975
+
976
+ /**
977
+ * @summary BEQAL(Branch if EQual And Link)指令节点
978
+ *
979
+ * @desc 如果第二个操作数等于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
980
+ * @elseif en
981
+ * @summary BEQAL (Branch if EQual And Link) instruction node
982
+ *
983
+ * @desc Jumps to the target address specified by the first operand if the second operand equals the third operand, and saves the return address.
984
+ *
985
+ * @example
986
+ * ```typescript
987
+ * // BEQAL loop r0 r1
988
+ * // 如果 r0 == r1,跳转到 loop 并保存返回地址
989
+ * ```
990
+ *
991
+ * @public
992
+ */
993
+ export interface BeqalInstructionNode extends TernaryInstruction_O_O_O {
994
+ type: "beqalInstruction";
995
+ }
996
+
997
+
998
+ /**
999
+ * @summary BNE(Branch if Not Equal)指令节点
1000
+ *
1001
+ * @desc 如果第二个操作数不等于第三个操作数,则跳转到第一个操作数指定的目标地址。
1002
+ * @elseif en
1003
+ * @summary BNE (Branch if Not Equal) instruction node
1004
+ *
1005
+ * @desc Jumps to the target address specified by the first operand if the second operand does not equal the third operand.
1006
+ *
1007
+ * @example
1008
+ * ```typescript
1009
+ * // BNE loop r0 r1
1010
+ * // 如果 r0 != r1,跳转到 loop
1011
+ * ```
1012
+ *
1013
+ * @public
1014
+ */
1015
+ export interface BneInstructionNode extends TernaryInstruction_O_O_O {
1016
+ type: "bneInstruction";
1017
+ }
1018
+
1019
+
1020
+ /**
1021
+ * @summary BNEAL(Branch if Not Equal And Link)指令节点
1022
+ *
1023
+ * @desc 如果第二个操作数不等于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
1024
+ * @elseif en
1025
+ * @summary BNEAL (Branch if Not Equal And Link) instruction node
1026
+ *
1027
+ * @desc Jumps to the target address specified by the first operand if the second operand does not equal the third operand, and saves the return address.
1028
+ *
1029
+ * @example
1030
+ * ```typescript
1031
+ * // BNEAL loop r0 r1
1032
+ * // 如果 r0 != r1,跳转到 loop 并保存返回地址
1033
+ * ```
1034
+ *
1035
+ * @public
1036
+ */
1037
+ export interface BnealInstructionNode extends TernaryInstruction_O_O_O {
1038
+ type: "bnealInstruction";
1039
+ }
1040
+
1041
+
1042
+ /**
1043
+ * @summary BGE(Branch if Greater than or Equal)指令节点
1044
+ *
1045
+ * @desc 如果第二个操作数大于等于第三个操作数,则跳转到第一个操作数指定的目标地址。
1046
+ * @elseif en
1047
+ * @summary BGE (Branch if Greater than or Equal) instruction node
1048
+ *
1049
+ * @desc Jumps to the target address specified by the first operand if the second operand is greater than or equal to the third operand.
1050
+ *
1051
+ * @example
1052
+ * ```typescript
1053
+ * // BGE loop r0 r1
1054
+ * // 如果 r0 >= r1,跳转到 loop
1055
+ * ```
1056
+ *
1057
+ * @public
1058
+ */
1059
+ export interface BgeInstructionNode extends TernaryInstruction_O_O_O {
1060
+ type: "bgeInstruction";
1061
+ }
1062
+
1063
+
1064
+ /**
1065
+ * @summary BGEAL(Branch if Greater than or Equal And Link)指令节点
1066
+ *
1067
+ * @desc 如果第二个操作数大于等于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
1068
+ * @elseif en
1069
+ * @summary BGEAL (Branch if Greater than or Equal And Link) instruction node
1070
+ *
1071
+ * @desc Jumps to the target address specified by the first operand if the second operand is greater than or equal to the third operand, and saves the return address.
1072
+ *
1073
+ * @example
1074
+ * ```typescript
1075
+ * // BGEAL loop r0 r1
1076
+ * // 如果 r0 >= r1,跳转到 loop 并保存返回地址
1077
+ * ```
1078
+ *
1079
+ * @public
1080
+ */
1081
+ export interface BgealInstructionNode extends TernaryInstruction_O_O_O {
1082
+ type: "bgealInstruction";
1083
+ }
1084
+
1085
+
1086
+ /**
1087
+ * @summary BGT(Branch if Greater Than)指令节点
1088
+ *
1089
+ * @desc 如果第二个操作数大于第三个操作数,则跳转到第一个操作数指定的目标地址。
1090
+ * @elseif en
1091
+ * @summary BGT (Branch if Greater Than) instruction node
1092
+ *
1093
+ * @desc Jumps to the target address specified by the first operand if the second operand is greater than the third operand.
1094
+ *
1095
+ * @example
1096
+ * ```typescript
1097
+ * // BGT loop r0 r1
1098
+ * // 如果 r0 > r1,跳转到 loop
1099
+ * ```
1100
+ *
1101
+ * @public
1102
+ */
1103
+ export interface BgtInstructionNode extends TernaryInstruction_O_O_O {
1104
+ type: "bgtInstruction";
1105
+ }
1106
+
1107
+
1108
+ /**
1109
+ * @summary BGTAL(Branch if Greater Than And Link)指令节点
1110
+ *
1111
+ * @desc 如果第二个操作数大于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
1112
+ * @elseif en
1113
+ * @summary BGTAL (Branch if Greater Than And Link) instruction node
1114
+ *
1115
+ * @desc Jumps to the target address specified by the first operand if the second operand is greater than the third operand, and saves the return address.
1116
+ *
1117
+ * @example
1118
+ * ```typescript
1119
+ * // BGTAL loop r0 r1
1120
+ * // 如果 r0 > r1,跳转到 loop 并保存返回地址
1121
+ * ```
1122
+ *
1123
+ * @public
1124
+ */
1125
+ export interface BgtalInstructionNode extends TernaryInstruction_O_O_O {
1126
+ type: "bgtalInstruction";
1127
+ }
1128
+
1129
+
1130
+ /**
1131
+ * @summary BLE(Branch if Less than or Equal)指令节点
1132
+ *
1133
+ * @desc 如果第二个操作数小于等于第三个操作数,则跳转到第一个操作数指定的目标地址。
1134
+ * @elseif en
1135
+ * @summary BLE (Branch if Less than or Equal) instruction node
1136
+ *
1137
+ * @desc Jumps to the target address specified by the first operand if the second operand is less than or equal to the third operand.
1138
+ *
1139
+ * @example
1140
+ * ```typescript
1141
+ * // BLE loop r0 r1
1142
+ * // 如果 r0 <= r1,跳转到 loop
1143
+ * ```
1144
+ *
1145
+ * @public
1146
+ */
1147
+ export interface BleInstructionNode extends TernaryInstruction_O_O_O {
1148
+ type: "bleInstruction";
1149
+ }
1150
+
1151
+
1152
+ /**
1153
+ * @summary BLEAL(Branch if Less than or Equal And Link)指令节点
1154
+ *
1155
+ * @desc 如果第二个操作数小于等于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
1156
+ * @elseif en
1157
+ * @summary BLEAL (Branch if Less than or Equal And Link) instruction node
1158
+ *
1159
+ * @desc Jumps to the target address specified by the first operand if the second operand is less than or equal to the third operand, and saves the return address.
1160
+ *
1161
+ * @example
1162
+ * ```typescript
1163
+ * // BLEAL loop r0 r1
1164
+ * // 如果 r0 <= r1,跳转到 loop 并保存返回地址
1165
+ * ```
1166
+ *
1167
+ * @public
1168
+ */
1169
+ export interface BlealInstructionNode extends TernaryInstruction_O_O_O {
1170
+ type: "blealInstruction";
1171
+ }
1172
+
1173
+
1174
+ /**
1175
+ * @summary BLT(Branch if Less Than)指令节点
1176
+ *
1177
+ * @desc 如果第二个操作数小于第三个操作数,则跳转到第一个操作数指定的目标地址。
1178
+ * @elseif en
1179
+ * @summary BLT (Branch if Less Than) instruction node
1180
+ *
1181
+ * @desc Jumps to the target address specified by the first operand if the second operand is less than the third operand.
1182
+ *
1183
+ * @example
1184
+ * ```typescript
1185
+ * // BLT loop r0 r1
1186
+ * // 如果 r0 < r1,跳转到 loop
1187
+ * ```
1188
+ *
1189
+ * @public
1190
+ */
1191
+ export interface BltInstructionNode extends TernaryInstruction_O_O_O {
1192
+ type: "bltInstruction";
1193
+ }
1194
+
1195
+
1196
+ /**
1197
+ * @summary BLTAL(Branch if Less Than And Link)指令节点
1198
+ *
1199
+ * @desc 如果第二个操作数小于第三个操作数,则跳转到第一个操作数指定的目标地址并保存返回地址。
1200
+ * @elseif en
1201
+ * @summary BLTAL (Branch if Less Than And Link) instruction node
1202
+ *
1203
+ * @desc Jumps to the target address specified by the first operand if the second operand is less than the third operand, and saves the return address.
1204
+ *
1205
+ * @example
1206
+ * ```typescript
1207
+ * // BLTAL loop r0 r1
1208
+ * // 如果 r0 < r1,跳转到 loop 并保存返回地址
1209
+ * ```
1210
+ *
1211
+ * @public
1212
+ */
1213
+ export interface BltalInstructionNode extends TernaryInstruction_O_O_O {
1214
+ type: "bltalInstruction";
1215
+ }
1216
+
1217
+
1218
+ /**
1219
+ * @summary BAPZ(Branch if And Predicate Zero)指令节点
1220
+ *
1221
+ * @desc 如果第二个和第三个操作数的按位与结果为零,则跳转到第一个操作数指定的目标地址。
1222
+ * @elseif en
1223
+ * @summary BAPZ (Branch if And Predicate Zero) instruction node
1224
+ *
1225
+ * @desc Jumps to the target address specified by the first operand if the bitwise AND of the second and third operands is zero.
1226
+ *
1227
+ * @example
1228
+ * ```typescript
1229
+ * // BAPZ loop r0 r1
1230
+ * // 如果 (r0 & r1) == 0,跳转到 loop
1231
+ * ```
1232
+ *
1233
+ * @public
1234
+ */
1235
+ export interface BapzInstructionNode extends TernaryInstruction_O_O_O {
1236
+ type: "bapzInstruction";
1237
+ }
1238
+
1239
+
1240
+ /**
1241
+ * @summary BAPZAL(Branch if And Predicate Zero And Link)指令节点
1242
+ *
1243
+ * @desc 如果第二个和第三个操作数的按位与结果为零,则跳转到第一个操作数指定的目标地址并保存返回地址。
1244
+ * @elseif en
1245
+ * @summary BAPZAL (Branch if And Predicate Zero And Link) instruction node
1246
+ *
1247
+ * @desc Jumps to the target address specified by the first operand if the bitwise AND of the second and third operands is zero, and saves the return address.
1248
+ *
1249
+ * @example
1250
+ * ```typescript
1251
+ * // BAPZAL loop r0 r1
1252
+ * // 如果 (r0 & r1) == 0,跳转到 loop 并保存返回地址
1253
+ * ```
1254
+ *
1255
+ * @public
1256
+ */
1257
+ export interface BapzalInstructionNode extends TernaryInstruction_O_O_O {
1258
+ type: "bapzalInstruction";
1259
+ }
1260
+
1261
+
1262
+ /**
1263
+ * @summary BNAZ(Branch if Not And Predicate Zero)指令节点
1264
+ *
1265
+ * @desc 如果第二个和第三个操作数的按位与非结果为零(即按位与非零),则跳转到第一个操作数指定的目标地址。
1266
+ * @elseif en
1267
+ * @summary BNAZ (Branch if Not And Predicate Zero) instruction node
1268
+ *
1269
+ * @desc Jumps to the target address specified by the first operand if the bitwise AND of the second and third operands is non-zero.
1270
+ *
1271
+ * @example
1272
+ * ```typescript
1273
+ * // BNAZ loop r0 r1
1274
+ * // 如果 (r0 & r1) != 0,跳转到 loop
1275
+ * ```
1276
+ *
1277
+ * @public
1278
+ */
1279
+ export interface BnazInstructionNode extends TernaryInstruction_O_O_O {
1280
+ type: "bnazInstruction";
1281
+ }
1282
+
1283
+
1284
+ /**
1285
+ * @summary BNAZAL(Branch if Not And Predicate Zero And Link)指令节点
1286
+ *
1287
+ * @desc 如果第二个和第三个操作数的按位与非结果为零,则跳转到第一个操作数指定的目标地址并保存返回地址。
1288
+ * @elseif en
1289
+ * @summary BNAZAL (Branch if Not And Predicate Zero And Link) instruction node
1290
+ *
1291
+ * @desc Jumps to the target address specified by the first operand if the bitwise AND of the second and third operands is non-zero, and saves the return address.
1292
+ *
1293
+ * @example
1294
+ * ```typescript
1295
+ * // BNAZAL loop r0 r1
1296
+ * // 如果 (r0 & r1) != 0,跳转到 loop 并保存返回地址
1297
+ * ```
1298
+ *
1299
+ * @public
1300
+ */
1301
+ export interface BnazalInstructionNode extends TernaryInstruction_O_O_O {
1302
+ type: "bnazalInstruction";
1303
+ }
1304
+
1305
+
1306
+ /**
1307
+ * @summary BREQ(Branches Register if EQual)指令节点
1308
+ *
1309
+ * @desc 如果第二个操作数等于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1310
+ * @elseif en
1311
+ * @summary BREQ (Branches Register if EQual) instruction node
1312
+ *
1313
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand equals the third operand.
1314
+ *
1315
+ * @example
1316
+ * ```typescript
1317
+ * // BREQ r0 r1 r2
1318
+ * // 如果 r1 == r2,跳转到 r1 存储的地址
1319
+ * ```
1320
+ *
1321
+ * @public
1322
+ */
1323
+ export interface BreqInstructionNode extends TernaryInstruction_O_O_O {
1324
+ type: "breqInstruction";
1325
+ }
1326
+
1327
+
1328
+ /**
1329
+ * @summary BRNE(Branches Register if Not Equal)指令节点
1330
+ *
1331
+ * @desc 如果第二个操作数不等于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1332
+ * @elseif en
1333
+ * @summary BRNE (Branches Register if Not Equal) instruction node
1334
+ *
1335
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand does not equal the third operand.
1336
+ *
1337
+ * @example
1338
+ * ```typescript
1339
+ * // BRNE r0 r1 r2
1340
+ * // 如果 r1 != r2,跳转到 r1 存储的地址
1341
+ * ```
1342
+ *
1343
+ * @public
1344
+ */
1345
+ export interface BrneInstructionNode extends TernaryInstruction_O_O_O {
1346
+ type: "brneInstruction";
1347
+ }
1348
+
1349
+
1350
+ /**
1351
+ * @summary BRGE(Branches Register if Greater than or Equal)指令节点
1352
+ *
1353
+ * @desc 如果第二个操作数大于等于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1354
+ * @elseif en
1355
+ * @summary BRGE (Branches Register if Greater than or Equal) instruction node
1356
+ *
1357
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand is greater than or equal to the third operand.
1358
+ *
1359
+ * @example
1360
+ * ```typescript
1361
+ * // BRGE r0 r1 r2
1362
+ * // 如果 r1 >= r2,跳转到 r1 存储的地址
1363
+ * ```
1364
+ *
1365
+ * @public
1366
+ */
1367
+ export interface BrgeInstructionNode extends TernaryInstruction_O_O_O {
1368
+ type: "brgeInstruction";
1369
+ }
1370
+
1371
+
1372
+ /**
1373
+ * @summary BRGT(Branches Register if Greater Than)指令节点
1374
+ *
1375
+ * @desc 如果第二个操作数大于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1376
+ * @elseif en
1377
+ * @summary BRGT (Branches Register if Greater Than) instruction node
1378
+ *
1379
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand is greater than the third operand.
1380
+ *
1381
+ * @example
1382
+ * ```typescript
1383
+ * // BRGT r0 r1 r2
1384
+ * // 如果 r1 > r2,跳转到 r1 存储的地址
1385
+ * ```
1386
+ *
1387
+ * @public
1388
+ */
1389
+ export interface BrgtInstructionNode extends TernaryInstruction_O_O_O {
1390
+ type: "brgtInstruction";
1391
+ }
1392
+
1393
+
1394
+ /**
1395
+ * @summary BRLE(Branches Register if Less than or Equal)指令节点
1396
+ *
1397
+ * @desc 如果第二个操作数小于等于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1398
+ * @elseif en
1399
+ * @summary BRLE (Branches Register if Less than or Equal) instruction node
1400
+ *
1401
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand is less than or equal to the third operand.
1402
+ *
1403
+ * @example
1404
+ * ```typescript
1405
+ * // BRLE r0 r1 r2
1406
+ * // 如果 r1 <= r2,跳转到 r1 存储的地址
1407
+ * ```
1408
+ *
1409
+ * @public
1410
+ */
1411
+ export interface BrleInstructionNode extends TernaryInstruction_O_O_O {
1412
+ type: "brleInstruction";
1413
+ }
1414
+
1415
+
1416
+ /**
1417
+ * @summary BRLT(Branches Register if Less Than)指令节点
1418
+ *
1419
+ * @desc 如果第二个操作数小于第三个操作数,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1420
+ * @elseif en
1421
+ * @summary BRLT (Branches Register if Less Than) instruction node
1422
+ *
1423
+ * @desc Jumps to the target address specified by the second operand (as address register) if the second operand is less than the third operand.
1424
+ *
1425
+ * @example
1426
+ * ```typescript
1427
+ * // BRLT r0 r1 r2
1428
+ * // 如果 r1 < r2,跳转到 r1 存储的地址
1429
+ * ```
1430
+ *
1431
+ * @public
1432
+ */
1433
+ export interface BrltInstructionNode extends TernaryInstruction_O_O_O {
1434
+ type: "brltInstruction";
1435
+ }
1436
+
1437
+
1438
+ /**
1439
+ * @summary BRAPZ(Branches Register if And Predicate Zero)指令节点
1440
+ *
1441
+ * @desc 如果第二个和第三个操作数的按位与结果为零,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1442
+ * @elseif en
1443
+ * @summary BRAPZ (Branches Register if And Predicate Zero) instruction node
1444
+ *
1445
+ * @desc Jumps to the target address specified by the second operand (as address register) if the bitwise AND of the second and third operands is zero.
1446
+ *
1447
+ * @example
1448
+ * ```typescript
1449
+ * // BRAPZ r0 r1 r2
1450
+ * // 如果 (r1 & r2) == 0,跳转到 r1 存储的地址
1451
+ * ```
1452
+ *
1453
+ * @public
1454
+ */
1455
+ export interface BrapzInstructionNode extends TernaryInstruction_O_O_O {
1456
+ type: "brapzInstruction";
1457
+ }
1458
+
1459
+
1460
+ /**
1461
+ * @summary BRNAZ(Branches Register if Not And Predicate Zero)指令节点
1462
+ *
1463
+ * @desc 如果第二个和第三个操作数的按位与结果非零,则跳转到第二个操作数(作为地址寄存器)指定的目标地址。
1464
+ * @elseif en
1465
+ * @summary BRNAZ (Branches Register if Not And Predicate Zero) instruction node
1466
+ *
1467
+ * @desc Jumps to the target address specified by the second operand (as address register) if the bitwise AND of the second and third operands is non-zero.
1468
+ *
1469
+ * @example
1470
+ * ```typescript
1471
+ * // BRNAZ r0 r1 r2
1472
+ * // 如果 (r1 & r2) != 0,跳转到 r1 存储的地址
1473
+ * ```
1474
+ *
1475
+ * @public
1476
+ */
1477
+ export interface BrnazInstructionNode extends TernaryInstruction_O_O_O {
1478
+ type: "brnazInstruction";
1479
+ }
1480
+
1481
+
1482
+ /**
1483
+ * @summary 三元指令联合类型
1484
+ *
1485
+ * @desc 包含所有三元指令类型的联合,包括可能的错误节点。
1486
+ * @elseif en
1487
+ * @summary Ternary instruction union type
1488
+ *
1489
+ * @desc Union of all ternary instruction types, including possible error nodes.
1490
+ *
1491
+ * @public
1492
+ */
1493
+ export type TernaryInstructionNode =
1494
+ | AddInstructionNode
1495
+ | Atan2InstructionNode
1496
+ | DivInstructionNode
1497
+ | MaxInstructionNode
1498
+ | MinInstructionNode
1499
+ | ModInstructionNode
1500
+ | MulInstructionNode
1501
+ | PowInstructionNode
1502
+ | AndInstructionNode
1503
+ | NorInstructionNode
1504
+ | OrInstructionNode
1505
+ | SlaInstructionNode
1506
+ | SllInstructionNode
1507
+ | SraInstructionNode
1508
+ | SrlInstructionNode
1509
+ | XorInstructionNode
1510
+ | SapzInstructionNode
1511
+ | SnazInstructionNode
1512
+ | SeqInstructionNode
1513
+ | SneInstructionNode
1514
+ | SgeInstructionNode
1515
+ | SgtInstructionNode
1516
+ | SleInstructionNode
1517
+ | SltInstructionNode
1518
+ | GetInstructionNode
1519
+ | RmapInstructionNode
1520
+ | PutInstructionNode
1521
+ | LInstructionNode
1522
+ | LrInstructionNode
1523
+ | SInstructionNode
1524
+ | SbInstructionNode
1525
+ | BdnvlInstructionNode
1526
+ | BdnvsInstructionNode
1527
+ | BeqInstructionNode
1528
+ | BeqalInstructionNode
1529
+ | BneInstructionNode
1530
+ | BnealInstructionNode
1531
+ | BgeInstructionNode
1532
+ | BgealInstructionNode
1533
+ | BgtInstructionNode
1534
+ | BgtalInstructionNode
1535
+ | BleInstructionNode
1536
+ | BlealInstructionNode
1537
+ | BltInstructionNode
1538
+ | BltalInstructionNode
1539
+ | BapzInstructionNode
1540
+ | BapzalInstructionNode
1541
+ | BnazInstructionNode
1542
+ | BnazalInstructionNode
1543
+ | BreqInstructionNode
1544
+ | BrneInstructionNode
1545
+ | BrgeInstructionNode
1546
+ | BrgtInstructionNode
1547
+ | BrleInstructionNode
1548
+ | BrltInstructionNode
1549
+ | BrapzInstructionNode
1550
+ | BrnazInstructionNode
1551
+ | ErrorNode;