/
convertOpcodes.C
2053 lines (2039 loc) · 95.8 KB
/
convertOpcodes.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* See the dyninst/COPYRIGHT file for copyright information.
*
* We provide the Paradyn Tools (below described as "Paradyn")
* on an AS IS basis, and do not warrant its validity or performance.
* We reserve the right to update, modify, or discontinue this
* software at any time. We shall have no obligation to supply such
* updates or modifications or any other form of support to you.
*
* By your use of Paradyn, you understand and agree that we (or any
* other person or entity with proprietary rights in Paradyn) are
* under no obligation to provide either maintenance services,
* update services, notices of latent defects, or correction of
* defects for Paradyn.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
// This file was automatically generated
//#include "SymEval.h"
//#include "SymEvalPolicy.h"
#include "RoseInsnFactory.h"
#include "../rose/RegisterDescriptor.h"
#include "DynAST.h"
#include "external/rose/armv8InstructionEnum.h"
#include "external/rose/amdgpuInstructionEnum.h"
#include "../rose/x86InstructionSemantics.h"
#include "external/rose/powerpcInstructionEnum.h"
using namespace Dyninst;
using namespace Dyninst::InstructionAPI;
using namespace Dyninst::DataflowAPI;
X86InstructionKind RoseInsnX86Factory::convertKind(entryID opcode, prefixEntryID prefix) {
switch (prefix) {
case prefix_rep:
switch (opcode) {
case e_insb: return x86_rep_insb;
case e_insd: return x86_rep_insd;
case e_insw: return x86_rep_insw;
case e_lodsb: return x86_rep_lodsb;
case e_lodsd: return x86_rep_lodsd;
case e_lodsw: return x86_rep_lodsw;
case e_movsb: return x86_rep_movsb;
case e_movsd: return x86_rep_movsd;
case e_movsw: return x86_rep_movsw;
case e_outsb: return x86_rep_outsb;
case e_outsd: return x86_rep_outsd;
case e_outsw: return x86_rep_outsw;
case e_stosb: return x86_rep_stosb;
case e_stosd: return x86_rep_stosd;
case e_stosw: return x86_rep_stosw;
case e_cmpsb: return x86_repe_cmpsb;
case e_cmpsd: return x86_repe_cmpsd;
case e_cmpsw: return x86_repe_cmpsw;
case e_scasb: return x86_repe_scasb;
case e_scasd: return x86_repe_scasd;
case e_scasw: return x86_repe_scasw;
default: return x86_unknown_instruction;
}
break;
case prefix_repnz:
switch (opcode) {
case e_cmpsb: return x86_repne_cmpsb;
case e_cmpsd: return x86_repne_cmpsd;
case e_cmpsw: return x86_repne_cmpsw;
case e_scasb: return x86_repne_scasb;
case e_scasd: return x86_repne_scasd;
case e_scasw: return x86_repne_scasw;
default: return x86_unknown_instruction;
}
break;
case prefix_none:
default:
switch (opcode) {
case e_jb:
return x86_jb;
case e_jb_jnaej_j:
return x86_jb;
case e_jbe:
return x86_jbe;
case e_jcxz_jec:
return x86_jcxz;
case e_jl:
return x86_jl;
case e_jle:
return x86_jle;
case e_jmp:
return x86_jmp;
case e_jnb:
return x86_jae;
case e_jnb_jae_j:
return x86_jae;
case e_jnbe:
return x86_ja;
case e_jnl:
return x86_jge;
case e_jnle:
return x86_jg;
case e_jno:
return x86_jno;
case e_jnp:
return x86_jpo;
case e_jns:
return x86_jns;
case e_jnz:
return x86_jne;
case e_jo:
return x86_jo;
case e_jp:
return x86_jpe;
case e_js:
return x86_js;
case e_jz:
return x86_je;
case e_loop:
return x86_loop;
case e_loope:
return x86_loopz;
case e_loopne:
return x86_loopnz;
case e_call:
return x86_call;
case e_cmp:
return x86_cmp;
case e_cmppd:
return x86_cmppd;
case e_cmpps:
return x86_cmpps;
case e_cmpsb:
return x86_cmpsb;
case e_cmpsd:
return x86_cmpsd;
case e_cmpss:
return x86_cmpss;
case e_cmpsw:
return x86_cmpsw;
case e_cmpxchg:
return x86_cmpxchg;
case e_cmpxchg8b:
return x86_cmpxchg8b;
case e_ret_far:
return x86_retf;
case e_ret_near:
return x86_ret;
case e_prefetch:
return x86_prefetch;
case e_prefetchnta:
return x86_prefetchnta;
case e_prefetcht0:
return x86_prefetcht0;
case e_prefetcht1:
return x86_prefetcht1;
case e_prefetcht2:
return x86_prefetcht2;
case e_prefetch_w:
return x86_prefetchw;
case e_prefetchw:
return x86_prefetchw;
case e_No_Entry:
return x86_unknown_instruction;
case e_aaa:
return x86_aaa;
case e_aad:
return x86_aad;
case e_aam:
return x86_aam;
case e_aas:
return x86_aas;
case e_adc:
return x86_adc;
case e_add:
return x86_add;
case e_addpd:
return x86_addpd;
case e_addps:
return x86_addps;
case e_addsd:
return x86_addsd;
case e_addss:
return x86_addss;
case e_addsubpd:
return x86_addsubpd;
case e_addsubps:
return x86_addsubps;
case e_and:
return x86_and;
case e_andnpd:
return x86_andnpd;
case e_andnps:
return x86_andnps;
case e_andpd:
return x86_andpd;
case e_andps:
return x86_andps;
case e_arpl:
return x86_arpl;
case e_bound:
return x86_bound;
case e_bsf:
return x86_bsf;
case e_bsr:
return x86_bsr;
case e_bswap:
return x86_bswap;
case e_bt:
return x86_bt;
case e_btc:
return x86_btc;
case e_btr:
return x86_btr;
case e_bts:
return x86_bts;
case e_cbw:
return x86_cbw;
case e_cdq:
return x86_cdq;
case e_clc:
return x86_clc;
case e_cld:
return x86_cld;
case e_clflush:
return x86_clflush;
case e_cli:
return x86_cli;
case e_clts:
return x86_clts;
case e_cmc:
return x86_cmc;
case e_cmovbe:
return x86_cmovbe;
case e_cmove:
return x86_cmove;
case e_cmovb:
return x86_cmovb;
case e_cmovae:
return x86_cmovae;
case e_cmova:
return x86_cmova;
case e_cmovne:
return x86_cmovne;
case e_cmovle:
return x86_cmovle;
case e_cmovnge:
return x86_cmovl;
case e_cmovnl:
return x86_cmovge;
case e_cmovno:
return x86_cmovno;
case e_cmovns:
return x86_cmovns;
case e_cmovo:
return x86_cmovo;
case e_cmovpe:
return x86_cmovpe;
case e_cmovpo:
return x86_cmovpo;
case e_cmovs:
return x86_cmovs;
case e_comisd:
return x86_comisd;
case e_comiss:
return x86_comiss;
case e_cpuid:
return x86_cpuid;
case e_cvtdq2pd:
return x86_cvtdq2pd;
case e_cvtdq2ps:
return x86_cvtdq2ps;
case e_cvtpd2dq:
return x86_cvtpd2dq;
case e_cvtpd2pi:
return x86_cvtpd2pi;
case e_cvtpd2ps:
return x86_cvtpd2ps;
case e_cvtpi2pd:
return x86_cvtpi2pd;
case e_cvtpi2ps:
return x86_cvtpi2ps;
case e_cvtps2dq:
return x86_cvtps2dq;
case e_cvtps2pd:
return x86_cvtps2pd;
case e_cvtps2pi:
return x86_cvtps2pi;
case e_cvtsd2si:
return x86_cvtsd2si;
case e_cvtsd2ss:
return x86_cvtsd2ss;
case e_cvtsi2sd:
return x86_cvtsi2sd;
case e_cvtsi2ss:
return x86_cvtsi2ss;
case e_cvtss2sd:
return x86_cvtss2sd;
case e_cvtss2si:
return x86_cvtss2si;
case e_cvttpd2dq:
return x86_cvttpd2dq;
case e_cvttpd2pi:
return x86_cvttpd2pi;
case e_cvttps2dq:
return x86_cvttps2dq;
case e_cvttps2pi:
return x86_cvttps2pi;
case e_cvttsd2si:
return x86_cvttsd2si;
case e_cvttss2si:
return x86_cvttss2si;
case e_cwd:
return x86_cwd;
case e_cwde:
return x86_cwde;
case e_daa:
return x86_daa;
case e_das:
return x86_das;
case e_dec:
return x86_dec;
case e_div:
return x86_div;
case e_divpd:
return x86_divpd;
case e_divps:
return x86_divps;
case e_divsd:
return x86_divsd;
case e_divss:
return x86_divss;
case e_emms:
return x86_emms;
case e_enter:
return x86_enter;
case e_extrq:
return x86_extrq;
case e_fadd:
return x86_fadd;
case e_fbld:
return x86_fbld;
case e_fbstp:
return x86_fbstp;
case e_fcom:
return x86_fcom;
case e_fcomp:
return x86_fcomp;
case e_fdiv:
return x86_fdiv;
case e_fdivr:
return x86_fdivr;
case e_femms:
return x86_femms;
case e_fiadd:
return x86_fiadd;
case e_ficom:
return x86_ficom;
case e_ficomp:
return x86_ficomp;
case e_fidiv:
return x86_fidiv;
case e_fidivr:
return x86_fidivr;
case e_fild:
return x86_fild;
case e_fimul:
return x86_fimul;
case e_fist:
return x86_fist;
case e_fistp:
return x86_fistp;
case e_fisttp:
return x86_fisttp;
case e_fisub:
return x86_fisub;
case e_fisubr:
return x86_fisubr;
case e_fld:
return x86_fld;
case e_fldcw:
return x86_fldcw;
case e_fldenv:
return x86_fldenv;
case e_fmul:
return x86_fmul;
case e_fnop:
return x86_fnop;
case e_frstor:
return x86_frstor;
case e_fnsave:
return x86_fnsave;
case e_fst:
return x86_fst;
case e_fnstcw:
return x86_fnstcw;
case e_fnstenv:
return x86_fnstenv;
case e_fstp:
return x86_fstp;
case e_fnstsw:
return x86_fnstsw;
case e_fsub:
return x86_fsub;
case e_fsubr:
return x86_fsubr;
case e_fucomp:
return x86_fucomp;
case e_fxrstor:
return x86_fxrstor;
case e_fxsave:
return x86_fxsave;
case e_haddpd:
return x86_haddpd;
case e_haddps:
return x86_haddps;
case e_hlt:
return x86_hlt;
case e_hsubpd:
return x86_hsubpd;
case e_hsubps:
return x86_hsubps;
case e_idiv:
return x86_idiv;
case e_imul:
return x86_imul;
case e_in:
return x86_in;
case e_inc:
return x86_inc;
case e_insb:
return x86_insb;
case e_insd:
return x86_insd;
case e_insertq:
return x86_insertq;
case e_insw:
return x86_insw;
case e_int:
return x86_int;
case e_int3:
return x86_int3;
case e_int1:
return x86_int1;
case e_into:
return x86_into;
case e_invd:
return x86_invd;
case e_invlpg:
return x86_invlpg;
case e_iret:
return x86_iret;
case e_lahf:
return x86_lahf;
case e_lar:
return x86_lar;
case e_lddqu:
return x86_lddqu;
case e_ldmxcsr:
return x86_ldmxcsr;
case e_lds:
return x86_lds;
case e_lea:
return x86_lea;
case e_leave:
return x86_leave;
case e_les:
return x86_les;
case e_lfence:
return x86_lfence;
case e_lfs:
return x86_lfs;
case e_lgdt:
return x86_lgdt;
case e_lgs:
return x86_lgs;
case e_lidt:
return x86_lidt;
case e_lldt:
return x86_lldt;
case e_lmsw:
return x86_lmsw;
case e_lodsb:
return x86_lodsb;
case e_lodsd:
return x86_lodsd;
case e_lodsw:
return x86_lodsw;
case e_lsl:
return x86_lsl;
case e_lss:
return x86_lss;
case e_ltr:
return x86_ltr;
case e_maskmovdqu:
return x86_maskmovq;
case e_maskmovq:
return x86_maskmovq;
case e_maxpd:
return x86_maxpd;
case e_maxps:
return x86_maxps;
case e_maxsd:
return x86_maxsd;
case e_maxss:
return x86_maxss;
case e_mfence:
return x86_mfence;
case e_minpd:
return x86_minpd;
case e_minps:
return x86_minps;
case e_minsd:
return x86_minsd;
case e_minss:
return x86_minss;
case e_mov:
return x86_mov;
case e_movapd:
return x86_movapd;
case e_movaps:
return x86_movaps;
case e_movd:
return x86_movd;
case e_movddup:
return x86_movddup;
case e_movdq2q:
return x86_movdq2q;
case e_movdqa:
return x86_movdqa;
case e_movdqu:
return x86_movdqu;
case e_movhpd:
return x86_movhpd;
case e_movhps:
return x86_movhps;
case e_movhps_movlhps:
return x86_movhps;
case e_movlpd:
return x86_movlpd;
case e_movlps:
return x86_movlps;
case e_movlps_movhlps:
return x86_movlps;
case e_movmskpd:
return x86_movmskpd;
case e_movmskps:
return x86_movmskps;
case e_movntdq:
return x86_movntdq;
case e_movnti:
return x86_movnti;
case e_movntpd:
return x86_movntpd;
case e_movntps:
return x86_movntps;
case e_movntq:
return x86_movntq;
case e_movntsd:
return x86_movntsd;
case e_movntss:
return x86_movntss;
case e_movq:
return x86_movq;
case e_movq2dq:
return x86_movq2dq;
case e_movsb:
return x86_movsb;
case e_movsd:
return x86_movsd;
case e_movshdup:
return x86_movshdup;
case e_movsldup:
return x86_movsldup;
case e_movss:
return x86_movss;
case e_movsw:
return x86_movsw;
case e_movsx:
return x86_movsx;
case e_movsxd:
return x86_movsxd;
case e_movupd:
return x86_movupd;
case e_movups:
return x86_movups;
case e_movzx:
return x86_movzx;
case e_mul:
return x86_mul;
case e_mulpd:
return x86_mulpd;
case e_mulps:
return x86_mulps;
case e_mulsd:
return x86_mulsd;
case e_mulss:
return x86_mulss;
case e_neg:
return x86_neg;
case e_nop:
return x86_nop;
case e_not:
return x86_not;
case e_or:
return x86_or;
case e_orpd:
return x86_orpd;
case e_orps:
return x86_orps;
case e_out:
return x86_out;
case e_outsb:
return x86_outsb;
case e_outsd:
return x86_outsd;
case e_outsw:
return x86_outsw;
case e_packssdw:
return x86_packssdw;
case e_packsswb:
return x86_packsswb;
case e_packuswb:
return x86_packuswb;
case e_paddb:
return x86_paddb;
case e_paddd:
return x86_paddd;
case e_paddq:
return x86_paddq;
case e_paddsb:
return x86_paddsb;
case e_paddsw:
return x86_paddsw;
case e_paddusb:
return x86_paddusb;
case e_paddusw:
return x86_paddusw;
case e_paddw:
return x86_paddw;
case e_pand:
return x86_pand;
case e_pandn:
return x86_pandn;
case e_pavgb:
return x86_pavgb;
case e_pavgw:
return x86_pavgw;
case e_pcmpeqb:
return x86_pcmpeqb;
case e_pcmpeqd:
return x86_pcmpeqd;
case e_pcmpeqw:
return x86_pcmpeqw;
case e_pcmpgtd:
return x86_pcmpgtd;
case e_pcmpgtb:
return x86_pcmpgtb;
case e_pcmpgtw:
return x86_pcmpgtw;
case e_pextrw:
return x86_pextrw;
case e_pinsrw:
return x86_pinsrw;
case e_pmaddwd:
return x86_pmaddwd;
case e_pmaxsw:
return x86_pmaxsw;
case e_pmaxub:
return x86_pmaxub;
case e_pminsw:
return x86_pminsw;
case e_pminub:
return x86_pminub;
case e_pmovmskb:
return x86_pmovmskb;
case e_pmulhuw:
return x86_pmulhuw;
case e_pmulhw:
return x86_pmulhw;
case e_pmullw:
return x86_pmullw;
case e_pmuludq:
return x86_pmuludq;
case e_pop:
return x86_pop;
case e_popa:
return x86_popa;
case e_popad:
return x86_popad;
case e_popf:
return x86_popf;
case e_popfd:
return x86_popfd;
case e_popcnt:
return x86_popcnt;
case e_por:
return x86_por;
case e_psadbw:
return x86_psadbw;
case e_pshufd:
return x86_pshufd;
case e_pshufhw:
return x86_pshufhw;
case e_pshuflw:
return x86_pshuflw;
case e_pshufw:
return x86_pshufw;
case e_pslld:
return x86_pslld;
case e_pslldq:
return x86_pslldq;
case e_psllq:
return x86_psllq;
case e_psllw:
return x86_psllw;
case e_psrad:
return x86_psrad;
case e_psraw:
return x86_psraw;
case e_psrld:
return x86_psrld;
case e_psrldq:
return x86_psrldq;
case e_psrlq:
return x86_psrlq;
case e_psrlw:
return x86_psrlw;
case e_psubb:
return x86_psubb;
case e_psubd:
return x86_psubd;
case e_psubsb:
return x86_psubsb;
case e_psubsw:
return x86_psubsw;
case e_psubusb:
return x86_psubusb;
case e_psubusw:
return x86_psubusw;
case e_psubw:
return x86_psubw;
case e_punpckhbw:
return x86_punpckhbw;
case e_punpckhdq:
return x86_punpckhdq;
case e_punpckhqdq:
return x86_punpckhqdq;
case e_punpckhwd:
return x86_punpckhwd;
case e_punpcklbw:
return x86_punpcklbw;
case e_punpckldq:
return x86_punpckldq;
case e_punpcklqdq:
return x86_punpcklqdq;
case e_punpcklwd:
return x86_punpcklwd;
case e_push:
return x86_push;
case e_pusha:
return x86_pusha;
case e_pushad:
return x86_pushad;
case e_pushf:
return x86_pushf;
case e_pushfd:
return x86_pushfd;
case e_pxor:
return x86_pxor;
case e_rcl:
return x86_rcl;
case e_rcpps:
return x86_rcpps;
case e_rcpss:
return x86_rcpss;
case e_rcr:
return x86_rcr;
case e_rdmsr:
return x86_rdmsr;
case e_rdpmc:
return x86_rdpmc;
case e_rdtsc:
return x86_rdtsc;
case e_rol:
return x86_rol;
case e_ror:
return x86_ror;
case e_rsm:
return x86_rsm;
case e_rsqrtps:
return x86_rsqrtps;
case e_rsqrtss:
return x86_rsqrtss;
case e_sahf:
return x86_sahf;
case e_salc:
return x86_salc;
case e_sar:
return x86_sar;
case e_sbb:
return x86_sbb;
case e_scasb:
return x86_scasb;
case e_scasd:
return x86_scasd;
case e_scasw:
return x86_scasw;
case e_setb:
return x86_setb;
case e_setbe:
return x86_setbe;
case e_setl:
return x86_setl;
case e_setle:
return x86_setle;
case e_setnb:
return x86_setae;
case e_setnbe:
return x86_seta;
case e_setnl:
return x86_setge;
case e_setnle:
return x86_setg;
case e_setno:
return x86_setno;
case e_setnp:
return x86_setpo;
case e_setns:
return x86_setns;
case e_setnz:
return x86_setne;
case e_seto:
return x86_seto;
case e_setp:
return x86_setpe;
case e_sets:
return x86_sets;
case e_setz:
return x86_sete;
case e_sfence:
return x86_sfence;
case e_sgdt:
return x86_sgdt;
case e_shl:
return x86_shl;
case e_shld:
return x86_shld;
case e_shr:
return x86_shr;
case e_shrd:
return x86_shrd;
case e_shufpd:
return x86_shufpd;
case e_shufps:
return x86_shufps;
case e_sidt:
return x86_sidt;
case e_sldt:
return x86_sldt;
case e_smsw:
return x86_smsw;
case e_sqrtpd:
return x86_sqrtpd;
case e_sqrtps:
return x86_sqrtps;
case e_sqrtsd:
return x86_sqrtsd;
case e_sqrtss:
return x86_sqrtss;
case e_stc:
return x86_stc;
case e_std:
return x86_std;
case e_sti:
return x86_sti;
case e_stmxcsr:
return x86_stmxcsr;
case e_stosb:
return x86_stosb;
case e_stosd:
return x86_stosd;
case e_stosw:
return x86_stosw;
case e_str:
return x86_str;
case e_sub:
return x86_sub;
case e_subpd:
return x86_subpd;
case e_subps:
return x86_subps;
case e_subsd:
return x86_subsd;
case e_subss:
return x86_subss;
case e_syscall:
return x86_syscall;
case e_sysenter:
return x86_sysenter;
case e_sysexit:
return x86_sysexit;
case e_sysret:
return x86_sysret;
case e_test:
return x86_test;
case e_ucomisd:
return x86_ucomisd;
case e_ucomiss:
return x86_ucomiss;
case e_ud0:
return x86_unknown_instruction;
case e_ud2:
return x86_ud2;
case e_ud2grp10:
return x86_ud2;
case e_unpckhpd:
return x86_unpckhpd;
case e_unpckhps:
return x86_unpckhps;
case e_unpcklpd:
return x86_unpcklpd;
case e_unpcklps:
return x86_unpcklps;
case e_verr:
return x86_verr;
case e_verw:
return x86_verw;
case e_vmread:
return x86_vmread;
case e_vmwrite:
return x86_vmwrite;
case e_wait:
return x86_wait;
case e_wbinvd:
return x86_wbinvd;
case e_wrmsr:
return x86_wrmsr;
case e_xadd:
return x86_xadd;
case e_xchg:
return x86_xchg;
case e_xlat:
return x86_xlatb;
case e_xor:
return x86_xor;
case e_xorpd:
return x86_xorpd;
case e_xorps:
return x86_xorps;
case e_fp_generic:
return x86_unknown_instruction;
case e_3dnow_generic:
return x86_unknown_instruction;
default:
return x86_unknown_instruction;
}
break;
}
}
PowerpcInstructionKind RoseInsnPPCFactory::convertKind(entryID opcode,
std::string mnem)
{
PowerpcInstructionKind ret = powerpc_unknown_instruction;
switch(opcode)
{
case power_op_stfdu: ret = powerpc_stfdu; break;
case power_op_fadd: ret = powerpc_fadd; break;
case power_op_xoris: ret = powerpc_xoris; break;
case power_op_mulhwu: ret = powerpc_mulhwu; break;
case power_op_stbux: ret = powerpc_stbux; break;
case power_op_cmpl: ret = powerpc_cmpl; break;
case power_op_subf: ret = powerpc_subf; break;
case power_op_svcs: ret = powerpc_sc; break;
case power_op_fmuls: ret = powerpc_fmuls; break;
case power_op_subfic: ret = powerpc_subfic; break;
case power_op_mcrfs: ret = powerpc_mcrfs; break;
case power_op_divs: ret = powerpc_divw; break;
case power_op_lwzx: ret = powerpc_lwzx; break;
case power_op_fctiw: ret = powerpc_fctiw; break;
case power_op_mtcrf: ret = powerpc_mtcrf; break;
case power_op_srq: ret = powerpc_unknown_instruction; break;
case power_op_sraw: ret = powerpc_sraw; break;
case power_op_lfdx: ret = powerpc_lfdx; break;
case power_op_stdcx_rc: ret = powerpc_stdcx_record; break;
case power_op_nor: ret = powerpc_nor; break;
case power_op_crandc: ret = powerpc_crandc; break;