1
case OP_MOVE_PRI:
2
{
3
WriteOp_Move_Pri(jit);
4
break;
5
}
6
case OP_MOVE_ALT:
7
8
WriteOp_Move_Alt(jit);
9
10
11
case OP_XCHG:
12
13
WriteOp_Xchg(jit);
14
15
16
case OP_PUSH:
17
18
WriteOp_Push(jit);
19
20
21
case OP_PUSH_S:
22
23
WriteOp_Push_S(jit);
24
25
26
case OP_PUSH2_C:
27
28
WriteOp_Push2_C(jit);
29
30
31
case OP_PUSH3_C:
32
33
WriteOp_Push3_C(jit);
34
35
36
case OP_PUSH4_C:
37
38
WriteOp_Push4_C(jit);
39
40
41
case OP_PUSH5_C:
42
43
WriteOp_Push5_C(jit);
44
45
46
case OP_PUSH2_ADR:
47
48
WriteOp_Push2_Adr(jit);
49
50
51
case OP_PUSH3_ADR:
52
53
WriteOp_Push3_Adr(jit);
54
55
56
case OP_PUSH4_ADR:
57
58
WriteOp_Push4_Adr(jit);
59
60
61
case OP_PUSH5_ADR:
62
63
WriteOp_Push5_Adr(jit);
64
65
66
case OP_PUSH2_S:
67
68
WriteOp_Push2_S(jit);
69
70
71
case OP_PUSH3_S:
72
73
WriteOp_Push3_S(jit);
74
75
76
case OP_PUSH4_S:
77
78
WriteOp_Push4_S(jit);
79
80
81
case OP_PUSH5_S:
82
83
WriteOp_Push5_S(jit);
84
85
86
case OP_PUSH5:
87
88
WriteOp_Push5(jit);
89
90
91
case OP_PUSH4:
92
93
WriteOp_Push4(jit);
94
95
96
case OP_PUSH3:
97
98
WriteOp_Push3(jit);
99
100
101
case OP_PUSH2:
102
103
WriteOp_Push2(jit);
104
105
106
case OP_ZERO_PRI:
107
108
WriteOp_Zero_Pri(jit);
109
110
111
case OP_ZERO_ALT:
112
113
WriteOp_Zero_Alt(jit);
114
115
116
case OP_PROC:
117
118
WriteOp_Proc(jit);
119
120
121
case OP_SHL:
122
123
WriteOp_Shl(jit);
124
125
126
case OP_SHR:
127
128
WriteOp_Shr(jit);
129
130
131
case OP_SSHR:
132
133
WriteOp_Sshr(jit);
134
135
136
case OP_SHL_C_PRI:
137
138
WriteOp_Shl_C_Pri(jit);
139
140
141
case OP_SHL_C_ALT:
142
143
WriteOp_Shl_C_Alt(jit);
144
145
146
case OP_SHR_C_PRI:
147
148
WriteOp_Shr_C_Pri(jit);
149
150
151
case OP_SHR_C_ALT:
152
153
WriteOp_Shr_C_Alt(jit);
154
155
156
case OP_SMUL:
157
158
WriteOp_SMul(jit);
159
160
161
case OP_ADD:
162
163
WriteOp_Add(jit);
164
165
166
case OP_SUB:
167
168
WriteOp_Sub(jit);
169
170
171
case OP_SUB_ALT:
172
173
WriteOp_Sub_Alt(jit);
174
175
176
case OP_NOP:
177
178
/* do nothing */
179
180
181
case OP_NOT:
182
183
WriteOp_Not(jit);
184
185
186
case OP_NEG:
187
188
WriteOp_Neg(jit);
189
190
191
case OP_XOR:
192
193
WriteOp_Xor(jit);
194
195
196
case OP_OR:
197
198
WriteOp_Or(jit);
199
200
201
case OP_AND:
202
203
WriteOp_And(jit);
204
205
206
case OP_INVERT:
207
208
WriteOp_Invert(jit);
209
210
211
case OP_ADD_C:
212
213
WriteOp_Add_C(jit);
214
215
216
case OP_SMUL_C:
217
218
WriteOp_SMul_C(jit);
219
220
221
case OP_SIGN_PRI:
222
223
WriteOp_Sign_Pri(jit);
224
225
226
case OP_SIGN_ALT:
227
228
WriteOp_Sign_Alt(jit);
229
230
231
case OP_EQ:
232
233
WriteOp_Eq(jit);
234
235
236
case OP_NEQ:
237
238
WriteOp_Neq(jit);
239
240
241
case OP_SLESS:
242
243
WriteOp_Sless(jit);
244
245
246
case OP_SLEQ:
247
248
WriteOp_Sleq(jit);
249
250
251
case OP_SGRTR:
252
253
WriteOp_Sgrtr(jit);
254
255
256
case OP_SGEQ:
257
258
WriteOp_Sgeq(jit);
259
260
261
case OP_EQ_C_PRI:
262
263
WriteOp_Eq_C_Pri(jit);
264
265
266
case OP_EQ_C_ALT:
267
268
WriteOp_Eq_C_Alt(jit);
269
270
271
case OP_INC_PRI:
272
273
WriteOp_Inc_Pri(jit);
274
275
276
case OP_INC_ALT:
277
278
WriteOp_Inc_Alt(jit);
279
280
281
case OP_INC:
282
283
WriteOp_Inc(jit);
284
285
286
case OP_INC_S:
287
288
WriteOp_Inc_S(jit);
289
290
291
case OP_INC_I:
292
293
WriteOp_Inc_I(jit);
294
295
296
case OP_DEC_PRI:
297
298
WriteOp_Dec_Pri(jit);
299
300
301
case OP_DEC_ALT:
302
303
WriteOp_Dec_Alt(jit);
304
305
306
case OP_DEC:
307
308
WriteOp_Dec(jit);
309
310
311
case OP_DEC_S:
312
313
WriteOp_Dec_S(jit);
314
315
316
case OP_DEC_I:
317
318
WriteOp_Dec_I(jit);
319
320
321
case OP_LOAD_PRI:
322
323
WriteOp_Load_Pri(jit);
324
325
326
case OP_LOAD_ALT:
327
328
WriteOp_Load_Alt(jit);
329
330
331
case OP_LOAD_S_PRI:
332
333
WriteOp_Load_S_Pri(jit);
334
335
336
case OP_LOAD_S_ALT:
337
338
WriteOp_Load_S_Alt(jit);
339
340
341
case OP_LREF_PRI:
342
343
WriteOp_Lref_Pri(jit);
344
345
346
case OP_LREF_ALT:
347
348
WriteOp_Lref_Alt(jit);
349
350
351
case OP_LREF_S_PRI:
352
353
WriteOp_Lref_S_Pri(jit);
354
355
356
case OP_LREF_S_ALT:
357
358
WriteOp_Lref_S_Alt(jit);
359
360
361
case OP_CONST_PRI:
362
363
WriteOp_Const_Pri(jit);
364
365
366
case OP_CONST_ALT:
367
368
WriteOp_Const_Alt(jit);
369
370
371
case OP_ADDR_PRI:
372
373
WriteOp_Addr_Pri(jit);
374
375
376
case OP_ADDR_ALT:
377
378
WriteOp_Addr_Alt(jit);
379
380
381
case OP_STOR_PRI:
382
383
WriteOp_Stor_Pri(jit);
384
385
386
case OP_STOR_ALT:
387
388
WriteOp_Stor_Alt(jit);
389
390
391
case OP_STOR_S_PRI:
392
393
WriteOp_Stor_S_Pri(jit);
394
395
396
case OP_STOR_S_ALT:
397
398
WriteOp_Stor_S_Alt(jit);
399
400
401
case OP_IDXADDR:
402
403
WriteOp_Idxaddr(jit);
404
405
406
case OP_SREF_PRI:
407
408
WriteOp_Sref_Pri(jit);
409
410
411
case OP_SREF_ALT:
412
413
WriteOp_Sref_Alt(jit);
414
415
416
case OP_SREF_S_PRI:
417
418
WriteOp_Sref_S_Pri(jit);
419
420
421
case OP_SREF_S_ALT:
422
423
WriteOp_Sref_S_Alt(jit);
424
425
426
case OP_POP_PRI:
427
428
WriteOp_Pop_Pri(jit);
429
430
431
case OP_POP_ALT:
432
433
WriteOp_Pop_Alt(jit);
434
435
436
case OP_SWAP_PRI:
437
438
WriteOp_Swap_Pri(jit);
439
440
441
case OP_SWAP_ALT:
442
443
WriteOp_Swap_Alt(jit);
444
445
446
case OP_PUSH_ADR:
447
448
WriteOp_PushAddr(jit);
449
450
451
case OP_MOVS:
452
453
WriteOp_Movs(jit);
454
455
456
case OP_FILL:
457
458
WriteOp_Fill(jit);
459
460
461
case OP_PUSH_C:
462
463
WriteOp_Push_C(jit);
464
465
466
case OP_ZERO:
467
468
WriteOp_Zero(jit);
469
470
471
case OP_ZERO_S:
472
473
WriteOp_Zero_S(jit);
474
475
476
case OP_PUSH_PRI:
477
478
WriteOp_Push_Pri(jit);
479
480
481
case OP_PUSH_ALT:
482
483
WriteOp_Push_Alt(jit);
484
485
486
case OP_LOAD_BOTH:
487
488
WriteOp_Load_Both(jit);
489
490
491
case OP_LOAD_S_BOTH:
492
493
WriteOp_Load_S_Both(jit);
494
495
496
case OP_CONST:
497
498
WriteOp_Const(jit);
499
500
501
case OP_CONST_S:
502
503
WriteOp_Const_S(jit);
504
505
506
case OP_LOAD_I:
507
508
WriteOp_Load_I(jit);
509
510
511
case OP_LODB_I:
512
513
WriteOp_Lodb_I(jit);
514
515
516
case OP_STOR_I:
517
518
WriteOp_Stor_I(jit);
519
520
521
case OP_STRB_I:
522
523
WriteOp_Strb_I(jit);
524
525
526
case OP_LIDX:
527
528
WriteOp_Lidx(jit);
529
530
531
case OP_LIDX_B:
532
533
WriteOp_Lidx_B(jit);
534
535
536
case OP_IDXADDR_B:
537
538
WriteOp_Idxaddr_B(jit);
539
540
541
case OP_STACK:
542
543
WriteOp_Stack(jit);
544
545
546
case OP_HEAP:
547
548
WriteOp_Heap(jit);
549
550
551
case OP_SDIV:
552
553
WriteOp_SDiv(jit);
554
555
556
case OP_SDIV_ALT:
557
558
WriteOp_SDiv_Alt(jit);
559
560
561
case OP_RETN:
562
563
WriteOp_Retn(jit);
564
565
566
case OP_BOUNDS:
567
568
WriteOp_Bounds(jit);
569
570
571
case OP_HALT:
572
573
WriteOp_Halt(jit);
574
575
576
case OP_BREAK:
577
578
WriteOp_Break(jit);
579
580
581
case OP_JUMP:
582
583
WriteOp_Jump(jit);
584
585
586
case OP_JZER:
587
588
WriteOp_Jzer(jit);
589
590
591
case OP_JNZ:
592
593
WriteOp_Jnz(jit);
594
595
596
case OP_JEQ:
597
598
WriteOp_Jeq(jit);
599
600
601
case OP_JNEQ:
602
603
WriteOp_Jneq(jit);
604
605
606
case OP_JSLESS:
607
608
WriteOp_Jsless(jit);
609
610
611
case OP_JSGRTR:
612
613
WriteOp_JsGrtr(jit);
614
615
616
case OP_JSGEQ:
617
618
WriteOp_JsGeq(jit);
619
620
621
case OP_JSLEQ:
622
623
WriteOp_Jsleq(jit);
624
625
626
case OP_SWITCH:
627
628
WriteOp_Switch(jit);
629
630
631
case OP_CASETBL:
632
633
WriteOp_Casetbl(jit);
634
635
636
case OP_CALL:
637
638
WriteOp_Call(jit);
639
640
641
case OP_SYSREQ_C:
642
643
WriteOp_Sysreq_C(jit);
644
645
646
case OP_SYSREQ_N:
647
648
if (data->inline_level & JIT_INLINE_NATIVES)
649
650
WriteOp_Sysreq_N(jit);
651
} else {
652
WriteOp_Sysreq_N_NoInline(jit);
653
654
655
656
case OP_TRACKER_PUSH_C:
657
658
WriteOp_Tracker_Push_C(jit);
659
660
661
case OP_TRACKER_POP_SETHEAP:
662
663
WriteOp_Tracker_Pop_SetHeap(jit);
664
665
666
case OP_GENARRAY:
667
668
WriteOp_GenArray(jit, false);
669
670
671
case OP_GENARRAY_Z:
672
673
WriteOp_GenArray(jit, true);
674
675
676
case OP_STRADJUST_PRI:
677
678
WriteOp_Stradjust_Pri(jit);
679
680
681
case OP_FABS:
682
683
WriteOp_FloatAbs(jit);
684
685
686
case OP_FLOAT:
687
688
WriteOp_Float(jit);
689
690
691
case OP_FLOATADD:
692
693
WriteOp_FloatAdd(jit);
694
695
696
case OP_FLOATSUB:
697
698
WriteOp_FloatSub(jit);
699
700
701
case OP_FLOATMUL:
702
703
WriteOp_FloatMul(jit);
704
705
706
case OP_FLOATDIV:
707
708
WriteOp_FloatDiv(jit);
709
710
711
case OP_RND_TO_NEAREST:
712
713
WriteOp_RountToNearest(jit);
714
715
716
case OP_RND_TO_FLOOR:
717
718
WriteOp_RoundToFloor(jit);
719
720
721
case OP_RND_TO_ZERO:
722
723
WriteOp_RoundToZero(jit);
724
725
726
case OP_RND_TO_CEIL:
727
728
WriteOp_RoundToCeil(jit);
729
730
731
case OP_FLOATCMP:
732
733
WriteOp_FloatCompare(jit);
734
735
736
#if defined USE_UNGEN_OPCODES
737
#include "ungen_opcode_switch.inc"
738
#endif
739
default:
740
741
data->error_set = SP_ERROR_INVALID_INSTRUCTION;
742
743