libTriton version 1.0 build 1592
Loading...
Searching...
No Matches
arm32Specifications.cpp
Go to the documentation of this file.
1
2/*
3** Copyright (C) - Triton
4**
5** This program is under the terms of the Apache License 2.0.
6*/
7
10#include <triton/cpuSize.hpp>
11#include <triton/exceptions.hpp>
13
14
15
16namespace triton {
17 namespace arch {
18 namespace arm {
19 namespace arm32 {
20
22 if (arch != triton::arch::ARCH_ARM32)
23 throw triton::exceptions::Architecture("ARM32Specifications::ARM32Specifications(): Invalid architecture.");
24
25 // Fill id2reg and name2id with those available in Arm32 from spec
26 #define REG_SPEC(UPPER_NAME, LOWER_NAME, ARM32_UPPER, ARM32_LOWER, ARM32_PARENT, MUTABLE) \
27 id2reg.emplace(ID_REG_ARM32_##UPPER_NAME, \
28 triton::arch::Register(triton::arch::ID_REG_ARM32_##UPPER_NAME, \
29 #LOWER_NAME, \
30 triton::arch::ID_REG_ARM32_##ARM32_PARENT, \
31 ARM32_UPPER, \
32 ARM32_LOWER, \
33 MUTABLE) \
34 ); \
35 name2id.emplace(#LOWER_NAME, ID_REG_ARM32_##UPPER_NAME);
36 // Handle register not available in capstone as normal registers
37 #define REG_SPEC_NO_CAPSTONE REG_SPEC
38 #include "triton/arm32.spec"
39 }
40
41
44
45 switch (id) {
46 // Convert registers from capstone value to triton value
47 #define REG_SPEC(UPPER_NAME, _1, _2, _3, _4, _5) \
48 case triton::extlibs::capstone::ARM_REG_##UPPER_NAME: \
49 tritonId = triton::arch::ID_REG_ARM32_##UPPER_NAME; \
50 break;
51 // Ignore registers not available in capstone
52 #define REG_SPEC_NO_CAPSTONE(_1, _2, _3, _4, _5, _6)
53 #include "triton/arm32.spec"
54
55 default:
57 break;
58 }
59
60 return tritonId;
61 }
62
63
66
67 switch (id) {
68 case triton::extlibs::capstone::ARM_SFT_INVALID:
70 break;
71
72 case triton::extlibs::capstone::ARM_SFT_ASR:
74 break;
75
76 case triton::extlibs::capstone::ARM_SFT_LSL:
78 break;
79
80 case triton::extlibs::capstone::ARM_SFT_LSR:
82 break;
83
84 case triton::extlibs::capstone::ARM_SFT_ROR:
86 break;
87
88 case triton::extlibs::capstone::ARM_SFT_RRX:
90 break;
91
92 case triton::extlibs::capstone::ARM_SFT_ASR_REG:
94 break;
95
96 case triton::extlibs::capstone::ARM_SFT_LSL_REG:
98 break;
99
100 case triton::extlibs::capstone::ARM_SFT_LSR_REG:
102 break;
103
104 case triton::extlibs::capstone::ARM_SFT_ROR_REG:
106 break;
107
108 case triton::extlibs::capstone::ARM_SFT_RRX_REG:
110 break;
111
112 default:
114 break;
115 }
116
117 return tritonId;
118 }
119
120
123
124 switch (id) {
125 case triton::extlibs::capstone::ARM_CC_INVALID:
127 break;
128
129 case triton::extlibs::capstone::ARM_CC_AL:
131 break;
132
133 case triton::extlibs::capstone::ARM_CC_EQ:
135 break;
136
137 case triton::extlibs::capstone::ARM_CC_GE:
139 break;
140
141 case triton::extlibs::capstone::ARM_CC_GT:
143 break;
144
145 case triton::extlibs::capstone::ARM_CC_HI:
147 break;
148
149 case triton::extlibs::capstone::ARM_CC_HS:
151 break;
152
153 case triton::extlibs::capstone::ARM_CC_LE:
155 break;
156
157 case triton::extlibs::capstone::ARM_CC_LO:
159 break;
160
161 case triton::extlibs::capstone::ARM_CC_LS:
163 break;
164
165 case triton::extlibs::capstone::ARM_CC_LT:
167 break;
168
169 case triton::extlibs::capstone::ARM_CC_MI:
171 break;
172
173 case triton::extlibs::capstone::ARM_CC_NE:
175 break;
176
177 case triton::extlibs::capstone::ARM_CC_PL:
179 break;
180
181 case triton::extlibs::capstone::ARM_CC_VC:
183 break;
184
185 case triton::extlibs::capstone::ARM_CC_VS:
187 break;
188
189 default:
191 break;
192 }
193
194 return tritonId;
195 }
196
197
200
201 switch (id) {
202 case triton::extlibs::capstone::ARM_INS_INVALID:
204 break;
205
206 case triton::extlibs::capstone::ARM_INS_ADC:
208 break;
209
210 case triton::extlibs::capstone::ARM_INS_ADD:
212 break;
213
214 case triton::extlibs::capstone::ARM_INS_ADR:
216 break;
217
218 case triton::extlibs::capstone::ARM_INS_AESD:
220 break;
221
222 case triton::extlibs::capstone::ARM_INS_AESE:
224 break;
225
226 case triton::extlibs::capstone::ARM_INS_AESIMC:
228 break;
229
230 case triton::extlibs::capstone::ARM_INS_AESMC:
232 break;
233
234 case triton::extlibs::capstone::ARM_INS_AND:
236 break;
237
238 case triton::extlibs::capstone::ARM_INS_BFC:
240 break;
241
242 case triton::extlibs::capstone::ARM_INS_BFI:
244 break;
245
246 case triton::extlibs::capstone::ARM_INS_BIC:
248 break;
249
250 case triton::extlibs::capstone::ARM_INS_BKPT:
252 break;
253
254 case triton::extlibs::capstone::ARM_INS_BL:
256 break;
257
258 case triton::extlibs::capstone::ARM_INS_BLX:
260 break;
261
262 case triton::extlibs::capstone::ARM_INS_BX:
264 break;
265
266 case triton::extlibs::capstone::ARM_INS_BXJ:
268 break;
269
270 case triton::extlibs::capstone::ARM_INS_B:
272 break;
273
274 case triton::extlibs::capstone::ARM_INS_CDP:
276 break;
277
278 case triton::extlibs::capstone::ARM_INS_CDP2:
280 break;
281
282 case triton::extlibs::capstone::ARM_INS_CLREX:
284 break;
285
286 case triton::extlibs::capstone::ARM_INS_CLZ:
288 break;
289
290 case triton::extlibs::capstone::ARM_INS_CMN:
292 break;
293
294 case triton::extlibs::capstone::ARM_INS_CMP:
296 break;
297
298 case triton::extlibs::capstone::ARM_INS_CPS:
300 break;
301
302 case triton::extlibs::capstone::ARM_INS_CRC32B:
304 break;
305
306 case triton::extlibs::capstone::ARM_INS_CRC32CB:
308 break;
309
310 case triton::extlibs::capstone::ARM_INS_CRC32CH:
312 break;
313
314 case triton::extlibs::capstone::ARM_INS_CRC32CW:
316 break;
317
318 case triton::extlibs::capstone::ARM_INS_CRC32H:
320 break;
321
322 case triton::extlibs::capstone::ARM_INS_CRC32W:
324 break;
325
326 case triton::extlibs::capstone::ARM_INS_DBG:
328 break;
329
330 case triton::extlibs::capstone::ARM_INS_DMB:
332 break;
333
334 case triton::extlibs::capstone::ARM_INS_DSB:
336 break;
337
338 case triton::extlibs::capstone::ARM_INS_EOR:
340 break;
341
342 case triton::extlibs::capstone::ARM_INS_ERET:
344 break;
345
346 case triton::extlibs::capstone::ARM_INS_VMOV:
348 break;
349
350 case triton::extlibs::capstone::ARM_INS_FLDMDBX:
352 break;
353
354 case triton::extlibs::capstone::ARM_INS_FLDMIAX:
356 break;
357
358 case triton::extlibs::capstone::ARM_INS_VMRS:
360 break;
361
362 case triton::extlibs::capstone::ARM_INS_FSTMDBX:
364 break;
365
366 case triton::extlibs::capstone::ARM_INS_FSTMIAX:
368 break;
369
370 case triton::extlibs::capstone::ARM_INS_HINT:
372 break;
373
374 case triton::extlibs::capstone::ARM_INS_HLT:
376 break;
377
378 case triton::extlibs::capstone::ARM_INS_HVC:
380 break;
381
382 case triton::extlibs::capstone::ARM_INS_ISB:
384 break;
385
386 case triton::extlibs::capstone::ARM_INS_LDA:
388 break;
389
390 case triton::extlibs::capstone::ARM_INS_LDAB:
392 break;
393
394 case triton::extlibs::capstone::ARM_INS_LDAEX:
396 break;
397
398 case triton::extlibs::capstone::ARM_INS_LDAEXB:
400 break;
401
402 case triton::extlibs::capstone::ARM_INS_LDAEXD:
404 break;
405
406 case triton::extlibs::capstone::ARM_INS_LDAEXH:
408 break;
409
410 case triton::extlibs::capstone::ARM_INS_LDAH:
412 break;
413
414 case triton::extlibs::capstone::ARM_INS_LDC2L:
416 break;
417
418 case triton::extlibs::capstone::ARM_INS_LDC2:
420 break;
421
422 case triton::extlibs::capstone::ARM_INS_LDCL:
424 break;
425
426 case triton::extlibs::capstone::ARM_INS_LDC:
428 break;
429
430 case triton::extlibs::capstone::ARM_INS_LDMDA:
432 break;
433
434 case triton::extlibs::capstone::ARM_INS_LDMDB:
436 break;
437
438 case triton::extlibs::capstone::ARM_INS_LDM:
440 break;
441
442 case triton::extlibs::capstone::ARM_INS_LDMIB:
444 break;
445
446 case triton::extlibs::capstone::ARM_INS_LDRBT:
448 break;
449
450 case triton::extlibs::capstone::ARM_INS_LDRB:
452 break;
453
454 case triton::extlibs::capstone::ARM_INS_LDRD:
456 break;
457
458 case triton::extlibs::capstone::ARM_INS_LDREX:
460 break;
461
462 case triton::extlibs::capstone::ARM_INS_LDREXB:
464 break;
465
466 case triton::extlibs::capstone::ARM_INS_LDREXD:
468 break;
469
470 case triton::extlibs::capstone::ARM_INS_LDREXH:
472 break;
473
474 case triton::extlibs::capstone::ARM_INS_LDRH:
476 break;
477
478 case triton::extlibs::capstone::ARM_INS_LDRHT:
480 break;
481
482 case triton::extlibs::capstone::ARM_INS_LDRSB:
484 break;
485
486 case triton::extlibs::capstone::ARM_INS_LDRSBT:
488 break;
489
490 case triton::extlibs::capstone::ARM_INS_LDRSH:
492 break;
493
494 case triton::extlibs::capstone::ARM_INS_LDRSHT:
496 break;
497
498 case triton::extlibs::capstone::ARM_INS_LDRT:
500 break;
501
502 case triton::extlibs::capstone::ARM_INS_LDR:
504 break;
505
506 case triton::extlibs::capstone::ARM_INS_MCR:
508 break;
509
510 case triton::extlibs::capstone::ARM_INS_MCR2:
512 break;
513
514 case triton::extlibs::capstone::ARM_INS_MCRR:
516 break;
517
518 case triton::extlibs::capstone::ARM_INS_MCRR2:
520 break;
521
522 case triton::extlibs::capstone::ARM_INS_MLA:
524 break;
525
526 case triton::extlibs::capstone::ARM_INS_MLS:
528 break;
529
530 case triton::extlibs::capstone::ARM_INS_MOV:
532 break;
533
534 #if CS_API_MAJOR >= 5
535 case triton::extlibs::capstone::ARM_INS_MOVS:
537 break;
538 #endif
539
540 case triton::extlibs::capstone::ARM_INS_MOVT:
542 break;
543
544 case triton::extlibs::capstone::ARM_INS_MOVW:
546 break;
547
548 case triton::extlibs::capstone::ARM_INS_MRC:
550 break;
551
552 case triton::extlibs::capstone::ARM_INS_MRC2:
554 break;
555
556 case triton::extlibs::capstone::ARM_INS_MRRC:
558 break;
559
560 case triton::extlibs::capstone::ARM_INS_MRRC2:
562 break;
563
564 case triton::extlibs::capstone::ARM_INS_MRS:
566 break;
567
568 case triton::extlibs::capstone::ARM_INS_MSR:
570 break;
571
572 case triton::extlibs::capstone::ARM_INS_MUL:
574 break;
575
576 case triton::extlibs::capstone::ARM_INS_MVN:
578 break;
579
580 case triton::extlibs::capstone::ARM_INS_ORR:
582 break;
583
584 case triton::extlibs::capstone::ARM_INS_PKHBT:
586 break;
587
588 case triton::extlibs::capstone::ARM_INS_PKHTB:
590 break;
591
592 case triton::extlibs::capstone::ARM_INS_PLDW:
594 break;
595
596 case triton::extlibs::capstone::ARM_INS_PLD:
598 break;
599
600 case triton::extlibs::capstone::ARM_INS_PLI:
602 break;
603
604 case triton::extlibs::capstone::ARM_INS_QADD:
606 break;
607
608 case triton::extlibs::capstone::ARM_INS_QADD16:
610 break;
611
612 case triton::extlibs::capstone::ARM_INS_QADD8:
614 break;
615
616 case triton::extlibs::capstone::ARM_INS_QASX:
618 break;
619
620 case triton::extlibs::capstone::ARM_INS_QDADD:
622 break;
623
624 case triton::extlibs::capstone::ARM_INS_QDSUB:
626 break;
627
628 case triton::extlibs::capstone::ARM_INS_QSAX:
630 break;
631
632 case triton::extlibs::capstone::ARM_INS_QSUB:
634 break;
635
636 case triton::extlibs::capstone::ARM_INS_QSUB16:
638 break;
639
640 case triton::extlibs::capstone::ARM_INS_QSUB8:
642 break;
643
644 case triton::extlibs::capstone::ARM_INS_RBIT:
646 break;
647
648 case triton::extlibs::capstone::ARM_INS_REV:
650 break;
651
652 case triton::extlibs::capstone::ARM_INS_REV16:
654 break;
655
656 case triton::extlibs::capstone::ARM_INS_REVSH:
658 break;
659
660 case triton::extlibs::capstone::ARM_INS_RFEDA:
662 break;
663
664 case triton::extlibs::capstone::ARM_INS_RFEDB:
666 break;
667
668 case triton::extlibs::capstone::ARM_INS_RFEIA:
670 break;
671
672 case triton::extlibs::capstone::ARM_INS_RFEIB:
674 break;
675
676 case triton::extlibs::capstone::ARM_INS_RSB:
678 break;
679
680 case triton::extlibs::capstone::ARM_INS_RSC:
682 break;
683
684 case triton::extlibs::capstone::ARM_INS_SADD16:
686 break;
687
688 case triton::extlibs::capstone::ARM_INS_SADD8:
690 break;
691
692 case triton::extlibs::capstone::ARM_INS_SASX:
694 break;
695
696 case triton::extlibs::capstone::ARM_INS_SBC:
698 break;
699
700 case triton::extlibs::capstone::ARM_INS_SBFX:
702 break;
703
704 case triton::extlibs::capstone::ARM_INS_SDIV:
706 break;
707
708 case triton::extlibs::capstone::ARM_INS_SEL:
710 break;
711
712 case triton::extlibs::capstone::ARM_INS_SETEND:
714 break;
715
716 case triton::extlibs::capstone::ARM_INS_SHA1C:
718 break;
719
720 case triton::extlibs::capstone::ARM_INS_SHA1H:
722 break;
723
724 case triton::extlibs::capstone::ARM_INS_SHA1M:
726 break;
727
728 case triton::extlibs::capstone::ARM_INS_SHA1P:
730 break;
731
732 case triton::extlibs::capstone::ARM_INS_SHA1SU0:
734 break;
735
736 case triton::extlibs::capstone::ARM_INS_SHA1SU1:
738 break;
739
740 case triton::extlibs::capstone::ARM_INS_SHA256H:
742 break;
743
744 case triton::extlibs::capstone::ARM_INS_SHA256H2:
746 break;
747
748 case triton::extlibs::capstone::ARM_INS_SHA256SU0:
750 break;
751
752 case triton::extlibs::capstone::ARM_INS_SHA256SU1:
754 break;
755
756 case triton::extlibs::capstone::ARM_INS_SHADD16:
758 break;
759
760 case triton::extlibs::capstone::ARM_INS_SHADD8:
762 break;
763
764 case triton::extlibs::capstone::ARM_INS_SHASX:
766 break;
767
768 case triton::extlibs::capstone::ARM_INS_SHSAX:
770 break;
771
772 case triton::extlibs::capstone::ARM_INS_SHSUB16:
774 break;
775
776 case triton::extlibs::capstone::ARM_INS_SHSUB8:
778 break;
779
780 case triton::extlibs::capstone::ARM_INS_SMC:
782 break;
783
784 case triton::extlibs::capstone::ARM_INS_SMLABB:
786 break;
787
788 case triton::extlibs::capstone::ARM_INS_SMLABT:
790 break;
791
792 case triton::extlibs::capstone::ARM_INS_SMLAD:
794 break;
795
796 case triton::extlibs::capstone::ARM_INS_SMLADX:
798 break;
799
800 case triton::extlibs::capstone::ARM_INS_SMLAL:
802 break;
803
804 case triton::extlibs::capstone::ARM_INS_SMLALBB:
806 break;
807
808 case triton::extlibs::capstone::ARM_INS_SMLALBT:
810 break;
811
812 case triton::extlibs::capstone::ARM_INS_SMLALD:
814 break;
815
816 case triton::extlibs::capstone::ARM_INS_SMLALDX:
818 break;
819
820 case triton::extlibs::capstone::ARM_INS_SMLALTB:
822 break;
823
824 case triton::extlibs::capstone::ARM_INS_SMLALTT:
826 break;
827
828 case triton::extlibs::capstone::ARM_INS_SMLATB:
830 break;
831
832 case triton::extlibs::capstone::ARM_INS_SMLATT:
834 break;
835
836 case triton::extlibs::capstone::ARM_INS_SMLAWB:
838 break;
839
840 case triton::extlibs::capstone::ARM_INS_SMLAWT:
842 break;
843
844 case triton::extlibs::capstone::ARM_INS_SMLSD:
846 break;
847
848 case triton::extlibs::capstone::ARM_INS_SMLSDX:
850 break;
851
852 case triton::extlibs::capstone::ARM_INS_SMLSLD:
854 break;
855
856 case triton::extlibs::capstone::ARM_INS_SMLSLDX:
858 break;
859
860 case triton::extlibs::capstone::ARM_INS_SMMLA:
862 break;
863
864 case triton::extlibs::capstone::ARM_INS_SMMLAR:
866 break;
867
868 case triton::extlibs::capstone::ARM_INS_SMMLS:
870 break;
871
872 case triton::extlibs::capstone::ARM_INS_SMMLSR:
874 break;
875
876 case triton::extlibs::capstone::ARM_INS_SMMUL:
878 break;
879
880 case triton::extlibs::capstone::ARM_INS_SMMULR:
882 break;
883
884 case triton::extlibs::capstone::ARM_INS_SMUAD:
886 break;
887
888 case triton::extlibs::capstone::ARM_INS_SMUADX:
890 break;
891
892 case triton::extlibs::capstone::ARM_INS_SMULBB:
894 break;
895
896 case triton::extlibs::capstone::ARM_INS_SMULBT:
898 break;
899
900 case triton::extlibs::capstone::ARM_INS_SMULL:
902 break;
903
904 case triton::extlibs::capstone::ARM_INS_SMULTB:
906 break;
907
908 case triton::extlibs::capstone::ARM_INS_SMULTT:
910 break;
911
912 case triton::extlibs::capstone::ARM_INS_SMULWB:
914 break;
915
916 case triton::extlibs::capstone::ARM_INS_SMULWT:
918 break;
919
920 case triton::extlibs::capstone::ARM_INS_SMUSD:
922 break;
923
924 case triton::extlibs::capstone::ARM_INS_SMUSDX:
926 break;
927
928 case triton::extlibs::capstone::ARM_INS_SRSDA:
930 break;
931
932 case triton::extlibs::capstone::ARM_INS_SRSDB:
934 break;
935
936 case triton::extlibs::capstone::ARM_INS_SRSIA:
938 break;
939
940 case triton::extlibs::capstone::ARM_INS_SRSIB:
942 break;
943
944 case triton::extlibs::capstone::ARM_INS_SSAT:
946 break;
947
948 case triton::extlibs::capstone::ARM_INS_SSAT16:
950 break;
951
952 case triton::extlibs::capstone::ARM_INS_SSAX:
954 break;
955
956 case triton::extlibs::capstone::ARM_INS_SSUB16:
958 break;
959
960 case triton::extlibs::capstone::ARM_INS_SSUB8:
962 break;
963
964 case triton::extlibs::capstone::ARM_INS_STC2L:
966 break;
967
968 case triton::extlibs::capstone::ARM_INS_STC2:
970 break;
971
972 case triton::extlibs::capstone::ARM_INS_STCL:
974 break;
975
976 case triton::extlibs::capstone::ARM_INS_STC:
978 break;
979
980 case triton::extlibs::capstone::ARM_INS_STL:
982 break;
983
984 case triton::extlibs::capstone::ARM_INS_STLB:
986 break;
987
988 case triton::extlibs::capstone::ARM_INS_STLEX:
990 break;
991
992 case triton::extlibs::capstone::ARM_INS_STLEXB:
994 break;
995
996 case triton::extlibs::capstone::ARM_INS_STLEXD:
998 break;
999
1000 case triton::extlibs::capstone::ARM_INS_STLEXH:
1002 break;
1003
1004 case triton::extlibs::capstone::ARM_INS_STLH:
1006 break;
1007
1008 case triton::extlibs::capstone::ARM_INS_STMDA:
1010 break;
1011
1012 case triton::extlibs::capstone::ARM_INS_STMDB:
1014 break;
1015
1016 case triton::extlibs::capstone::ARM_INS_STM:
1018 break;
1019
1020 case triton::extlibs::capstone::ARM_INS_STMIB:
1022 break;
1023
1024 case triton::extlibs::capstone::ARM_INS_STRBT:
1026 break;
1027
1028 case triton::extlibs::capstone::ARM_INS_STRB:
1030 break;
1031
1032 case triton::extlibs::capstone::ARM_INS_STRD:
1034 break;
1035
1036 case triton::extlibs::capstone::ARM_INS_STREX:
1038 break;
1039
1040 case triton::extlibs::capstone::ARM_INS_STREXB:
1042 break;
1043
1044 case triton::extlibs::capstone::ARM_INS_STREXD:
1046 break;
1047
1048 case triton::extlibs::capstone::ARM_INS_STREXH:
1050 break;
1051
1052 case triton::extlibs::capstone::ARM_INS_STRH:
1054 break;
1055
1056 case triton::extlibs::capstone::ARM_INS_STRHT:
1058 break;
1059
1060 case triton::extlibs::capstone::ARM_INS_STRT:
1062 break;
1063
1064 case triton::extlibs::capstone::ARM_INS_STR:
1066 break;
1067
1068 case triton::extlibs::capstone::ARM_INS_SUB:
1070 break;
1071
1072 case triton::extlibs::capstone::ARM_INS_SVC:
1074 break;
1075
1076 case triton::extlibs::capstone::ARM_INS_SWP:
1078 break;
1079
1080 case triton::extlibs::capstone::ARM_INS_SWPB:
1082 break;
1083
1084 case triton::extlibs::capstone::ARM_INS_SXTAB:
1086 break;
1087
1088 case triton::extlibs::capstone::ARM_INS_SXTAB16:
1090 break;
1091
1092 case triton::extlibs::capstone::ARM_INS_SXTAH:
1094 break;
1095
1096 case triton::extlibs::capstone::ARM_INS_SXTB:
1098 break;
1099
1100 case triton::extlibs::capstone::ARM_INS_SXTB16:
1102 break;
1103
1104 case triton::extlibs::capstone::ARM_INS_SXTH:
1106 break;
1107
1108 case triton::extlibs::capstone::ARM_INS_TEQ:
1110 break;
1111
1112 case triton::extlibs::capstone::ARM_INS_TRAP:
1114 break;
1115
1116 case triton::extlibs::capstone::ARM_INS_TST:
1118 break;
1119
1120 case triton::extlibs::capstone::ARM_INS_UADD16:
1122 break;
1123
1124 case triton::extlibs::capstone::ARM_INS_UADD8:
1126 break;
1127
1128 case triton::extlibs::capstone::ARM_INS_UASX:
1130 break;
1131
1132 case triton::extlibs::capstone::ARM_INS_UBFX:
1134 break;
1135
1136 case triton::extlibs::capstone::ARM_INS_UDF:
1138 break;
1139
1140 case triton::extlibs::capstone::ARM_INS_UDIV:
1142 break;
1143
1144 case triton::extlibs::capstone::ARM_INS_UHADD16:
1146 break;
1147
1148 case triton::extlibs::capstone::ARM_INS_UHADD8:
1150 break;
1151
1152 case triton::extlibs::capstone::ARM_INS_UHASX:
1154 break;
1155
1156 case triton::extlibs::capstone::ARM_INS_UHSAX:
1158 break;
1159
1160 case triton::extlibs::capstone::ARM_INS_UHSUB16:
1162 break;
1163
1164 case triton::extlibs::capstone::ARM_INS_UHSUB8:
1166 break;
1167
1168 case triton::extlibs::capstone::ARM_INS_UMAAL:
1170 break;
1171
1172 case triton::extlibs::capstone::ARM_INS_UMLAL:
1174 break;
1175
1176 case triton::extlibs::capstone::ARM_INS_UMULL:
1178 break;
1179
1180 case triton::extlibs::capstone::ARM_INS_UQADD16:
1182 break;
1183
1184 case triton::extlibs::capstone::ARM_INS_UQADD8:
1186 break;
1187
1188 case triton::extlibs::capstone::ARM_INS_UQASX:
1190 break;
1191
1192 case triton::extlibs::capstone::ARM_INS_UQSAX:
1194 break;
1195
1196 case triton::extlibs::capstone::ARM_INS_UQSUB16:
1198 break;
1199
1200 case triton::extlibs::capstone::ARM_INS_UQSUB8:
1202 break;
1203
1204 case triton::extlibs::capstone::ARM_INS_USAD8:
1206 break;
1207
1208 case triton::extlibs::capstone::ARM_INS_USADA8:
1210 break;
1211
1212 case triton::extlibs::capstone::ARM_INS_USAT:
1214 break;
1215
1216 case triton::extlibs::capstone::ARM_INS_USAT16:
1218 break;
1219
1220 case triton::extlibs::capstone::ARM_INS_USAX:
1222 break;
1223
1224 case triton::extlibs::capstone::ARM_INS_USUB16:
1226 break;
1227
1228 case triton::extlibs::capstone::ARM_INS_USUB8:
1230 break;
1231
1232 case triton::extlibs::capstone::ARM_INS_UXTAB:
1234 break;
1235
1236 case triton::extlibs::capstone::ARM_INS_UXTAB16:
1238 break;
1239
1240 case triton::extlibs::capstone::ARM_INS_UXTAH:
1242 break;
1243
1244 case triton::extlibs::capstone::ARM_INS_UXTB:
1246 break;
1247
1248 case triton::extlibs::capstone::ARM_INS_UXTB16:
1250 break;
1251
1252 case triton::extlibs::capstone::ARM_INS_UXTH:
1254 break;
1255
1256 case triton::extlibs::capstone::ARM_INS_VABAL:
1258 break;
1259
1260 case triton::extlibs::capstone::ARM_INS_VABA:
1262 break;
1263
1264 case triton::extlibs::capstone::ARM_INS_VABDL:
1266 break;
1267
1268 case triton::extlibs::capstone::ARM_INS_VABD:
1270 break;
1271
1272 case triton::extlibs::capstone::ARM_INS_VABS:
1274 break;
1275
1276 case triton::extlibs::capstone::ARM_INS_VACGE:
1278 break;
1279
1280 case triton::extlibs::capstone::ARM_INS_VACGT:
1282 break;
1283
1284 case triton::extlibs::capstone::ARM_INS_VADD:
1286 break;
1287
1288 case triton::extlibs::capstone::ARM_INS_VADDHN:
1290 break;
1291
1292 case triton::extlibs::capstone::ARM_INS_VADDL:
1294 break;
1295
1296 case triton::extlibs::capstone::ARM_INS_VADDW:
1298 break;
1299
1300 case triton::extlibs::capstone::ARM_INS_VAND:
1302 break;
1303
1304 case triton::extlibs::capstone::ARM_INS_VBIC:
1306 break;
1307
1308 case triton::extlibs::capstone::ARM_INS_VBIF:
1310 break;
1311
1312 case triton::extlibs::capstone::ARM_INS_VBIT:
1314 break;
1315
1316 case triton::extlibs::capstone::ARM_INS_VBSL:
1318 break;
1319
1320 case triton::extlibs::capstone::ARM_INS_VCEQ:
1322 break;
1323
1324 case triton::extlibs::capstone::ARM_INS_VCGE:
1326 break;
1327
1328 case triton::extlibs::capstone::ARM_INS_VCGT:
1330 break;
1331
1332 case triton::extlibs::capstone::ARM_INS_VCLE:
1334 break;
1335
1336 case triton::extlibs::capstone::ARM_INS_VCLS:
1338 break;
1339
1340 case triton::extlibs::capstone::ARM_INS_VCLT:
1342 break;
1343
1344 case triton::extlibs::capstone::ARM_INS_VCLZ:
1346 break;
1347
1348 case triton::extlibs::capstone::ARM_INS_VCMP:
1350 break;
1351
1352 case triton::extlibs::capstone::ARM_INS_VCMPE:
1354 break;
1355
1356 case triton::extlibs::capstone::ARM_INS_VCNT:
1358 break;
1359
1360 case triton::extlibs::capstone::ARM_INS_VCVTA:
1362 break;
1363
1364 case triton::extlibs::capstone::ARM_INS_VCVTB:
1366 break;
1367
1368 case triton::extlibs::capstone::ARM_INS_VCVT:
1370 break;
1371
1372 case triton::extlibs::capstone::ARM_INS_VCVTM:
1374 break;
1375
1376 case triton::extlibs::capstone::ARM_INS_VCVTN:
1378 break;
1379
1380 case triton::extlibs::capstone::ARM_INS_VCVTP:
1382 break;
1383
1384 case triton::extlibs::capstone::ARM_INS_VCVTT:
1386 break;
1387
1388 case triton::extlibs::capstone::ARM_INS_VDIV:
1390 break;
1391
1392 case triton::extlibs::capstone::ARM_INS_VDUP:
1394 break;
1395
1396 case triton::extlibs::capstone::ARM_INS_VEOR:
1398 break;
1399
1400 case triton::extlibs::capstone::ARM_INS_VEXT:
1402 break;
1403
1404 case triton::extlibs::capstone::ARM_INS_VFMA:
1406 break;
1407
1408 case triton::extlibs::capstone::ARM_INS_VFMS:
1410 break;
1411
1412 case triton::extlibs::capstone::ARM_INS_VFNMA:
1414 break;
1415
1416 case triton::extlibs::capstone::ARM_INS_VFNMS:
1418 break;
1419
1420 case triton::extlibs::capstone::ARM_INS_VHADD:
1422 break;
1423
1424 case triton::extlibs::capstone::ARM_INS_VHSUB:
1426 break;
1427
1428 case triton::extlibs::capstone::ARM_INS_VLD1:
1430 break;
1431
1432 case triton::extlibs::capstone::ARM_INS_VLD2:
1434 break;
1435
1436 case triton::extlibs::capstone::ARM_INS_VLD3:
1438 break;
1439
1440 case triton::extlibs::capstone::ARM_INS_VLD4:
1442 break;
1443
1444 case triton::extlibs::capstone::ARM_INS_VLDMDB:
1446 break;
1447
1448 case triton::extlibs::capstone::ARM_INS_VLDMIA:
1450 break;
1451
1452 case triton::extlibs::capstone::ARM_INS_VLDR:
1454 break;
1455
1456 case triton::extlibs::capstone::ARM_INS_VMAXNM:
1458 break;
1459
1460 case triton::extlibs::capstone::ARM_INS_VMAX:
1462 break;
1463
1464 case triton::extlibs::capstone::ARM_INS_VMINNM:
1466 break;
1467
1468 case triton::extlibs::capstone::ARM_INS_VMIN:
1470 break;
1471
1472 case triton::extlibs::capstone::ARM_INS_VMLA:
1474 break;
1475
1476 case triton::extlibs::capstone::ARM_INS_VMLAL:
1478 break;
1479
1480 case triton::extlibs::capstone::ARM_INS_VMLS:
1482 break;
1483
1484 case triton::extlibs::capstone::ARM_INS_VMLSL:
1486 break;
1487
1488 case triton::extlibs::capstone::ARM_INS_VMOVL:
1490 break;
1491
1492 case triton::extlibs::capstone::ARM_INS_VMOVN:
1494 break;
1495
1496 case triton::extlibs::capstone::ARM_INS_VMSR:
1498 break;
1499
1500 case triton::extlibs::capstone::ARM_INS_VMUL:
1502 break;
1503
1504 case triton::extlibs::capstone::ARM_INS_VMULL:
1506 break;
1507
1508 case triton::extlibs::capstone::ARM_INS_VMVN:
1510 break;
1511
1512 case triton::extlibs::capstone::ARM_INS_VNEG:
1514 break;
1515
1516 case triton::extlibs::capstone::ARM_INS_VNMLA:
1518 break;
1519
1520 case triton::extlibs::capstone::ARM_INS_VNMLS:
1522 break;
1523
1524 case triton::extlibs::capstone::ARM_INS_VNMUL:
1526 break;
1527
1528 case triton::extlibs::capstone::ARM_INS_VORN:
1530 break;
1531
1532 case triton::extlibs::capstone::ARM_INS_VORR:
1534 break;
1535
1536 case triton::extlibs::capstone::ARM_INS_VPADAL:
1538 break;
1539
1540 case triton::extlibs::capstone::ARM_INS_VPADDL:
1542 break;
1543
1544 case triton::extlibs::capstone::ARM_INS_VPADD:
1546 break;
1547
1548 case triton::extlibs::capstone::ARM_INS_VPMAX:
1550 break;
1551
1552 case triton::extlibs::capstone::ARM_INS_VPMIN:
1554 break;
1555
1556 case triton::extlibs::capstone::ARM_INS_VQABS:
1558 break;
1559
1560 case triton::extlibs::capstone::ARM_INS_VQADD:
1562 break;
1563
1564 case triton::extlibs::capstone::ARM_INS_VQDMLAL:
1566 break;
1567
1568 case triton::extlibs::capstone::ARM_INS_VQDMLSL:
1570 break;
1571
1572 case triton::extlibs::capstone::ARM_INS_VQDMULH:
1574 break;
1575
1576 case triton::extlibs::capstone::ARM_INS_VQDMULL:
1578 break;
1579
1580 case triton::extlibs::capstone::ARM_INS_VQMOVUN:
1582 break;
1583
1584 case triton::extlibs::capstone::ARM_INS_VQMOVN:
1586 break;
1587
1588 case triton::extlibs::capstone::ARM_INS_VQNEG:
1590 break;
1591
1592 case triton::extlibs::capstone::ARM_INS_VQRDMULH:
1594 break;
1595
1596 case triton::extlibs::capstone::ARM_INS_VQRSHL:
1598 break;
1599
1600 case triton::extlibs::capstone::ARM_INS_VQRSHRN:
1602 break;
1603
1604 case triton::extlibs::capstone::ARM_INS_VQRSHRUN:
1606 break;
1607
1608 case triton::extlibs::capstone::ARM_INS_VQSHL:
1610 break;
1611
1612 case triton::extlibs::capstone::ARM_INS_VQSHLU:
1614 break;
1615
1616 case triton::extlibs::capstone::ARM_INS_VQSHRN:
1618 break;
1619
1620 case triton::extlibs::capstone::ARM_INS_VQSHRUN:
1622 break;
1623
1624 case triton::extlibs::capstone::ARM_INS_VQSUB:
1626 break;
1627
1628 case triton::extlibs::capstone::ARM_INS_VRADDHN:
1630 break;
1631
1632 case triton::extlibs::capstone::ARM_INS_VRECPE:
1634 break;
1635
1636 case triton::extlibs::capstone::ARM_INS_VRECPS:
1638 break;
1639
1640 case triton::extlibs::capstone::ARM_INS_VREV16:
1642 break;
1643
1644 case triton::extlibs::capstone::ARM_INS_VREV32:
1646 break;
1647
1648 case triton::extlibs::capstone::ARM_INS_VREV64:
1650 break;
1651
1652 case triton::extlibs::capstone::ARM_INS_VRHADD:
1654 break;
1655
1656 case triton::extlibs::capstone::ARM_INS_VRINTA:
1658 break;
1659
1660 case triton::extlibs::capstone::ARM_INS_VRINTM:
1662 break;
1663
1664 case triton::extlibs::capstone::ARM_INS_VRINTN:
1666 break;
1667
1668 case triton::extlibs::capstone::ARM_INS_VRINTP:
1670 break;
1671
1672 case triton::extlibs::capstone::ARM_INS_VRINTR:
1674 break;
1675
1676 case triton::extlibs::capstone::ARM_INS_VRINTX:
1678 break;
1679
1680 case triton::extlibs::capstone::ARM_INS_VRINTZ:
1682 break;
1683
1684 case triton::extlibs::capstone::ARM_INS_VRSHL:
1686 break;
1687
1688 case triton::extlibs::capstone::ARM_INS_VRSHRN:
1690 break;
1691
1692 case triton::extlibs::capstone::ARM_INS_VRSHR:
1694 break;
1695
1696 case triton::extlibs::capstone::ARM_INS_VRSQRTE:
1698 break;
1699
1700 case triton::extlibs::capstone::ARM_INS_VRSQRTS:
1702 break;
1703
1704 case triton::extlibs::capstone::ARM_INS_VRSRA:
1706 break;
1707
1708 case triton::extlibs::capstone::ARM_INS_VRSUBHN:
1710 break;
1711
1712 case triton::extlibs::capstone::ARM_INS_VSELEQ:
1714 break;
1715
1716 case triton::extlibs::capstone::ARM_INS_VSELGE:
1718 break;
1719
1720 case triton::extlibs::capstone::ARM_INS_VSELGT:
1722 break;
1723
1724 case triton::extlibs::capstone::ARM_INS_VSELVS:
1726 break;
1727
1728 case triton::extlibs::capstone::ARM_INS_VSHLL:
1730 break;
1731
1732 case triton::extlibs::capstone::ARM_INS_VSHL:
1734 break;
1735
1736 case triton::extlibs::capstone::ARM_INS_VSHRN:
1738 break;
1739
1740 case triton::extlibs::capstone::ARM_INS_VSHR:
1742 break;
1743
1744 case triton::extlibs::capstone::ARM_INS_VSLI:
1746 break;
1747
1748 case triton::extlibs::capstone::ARM_INS_VSQRT:
1750 break;
1751
1752 case triton::extlibs::capstone::ARM_INS_VSRA:
1754 break;
1755
1756 case triton::extlibs::capstone::ARM_INS_VSRI:
1758 break;
1759
1760 case triton::extlibs::capstone::ARM_INS_VST1:
1762 break;
1763
1764 case triton::extlibs::capstone::ARM_INS_VST2:
1766 break;
1767
1768 case triton::extlibs::capstone::ARM_INS_VST3:
1770 break;
1771
1772 case triton::extlibs::capstone::ARM_INS_VST4:
1774 break;
1775
1776 case triton::extlibs::capstone::ARM_INS_VSTMDB:
1778 break;
1779
1780 case triton::extlibs::capstone::ARM_INS_VSTMIA:
1782 break;
1783
1784 case triton::extlibs::capstone::ARM_INS_VSTR:
1786 break;
1787
1788 case triton::extlibs::capstone::ARM_INS_VSUB:
1790 break;
1791
1792 case triton::extlibs::capstone::ARM_INS_VSUBHN:
1794 break;
1795
1796 case triton::extlibs::capstone::ARM_INS_VSUBL:
1798 break;
1799
1800 case triton::extlibs::capstone::ARM_INS_VSUBW:
1802 break;
1803
1804 case triton::extlibs::capstone::ARM_INS_VSWP:
1806 break;
1807
1808 case triton::extlibs::capstone::ARM_INS_VTBL:
1810 break;
1811
1812 case triton::extlibs::capstone::ARM_INS_VTBX:
1814 break;
1815
1816 case triton::extlibs::capstone::ARM_INS_VCVTR:
1818 break;
1819
1820 case triton::extlibs::capstone::ARM_INS_VTRN:
1822 break;
1823
1824 case triton::extlibs::capstone::ARM_INS_VTST:
1826 break;
1827
1828 case triton::extlibs::capstone::ARM_INS_VUZP:
1830 break;
1831
1832 case triton::extlibs::capstone::ARM_INS_VZIP:
1834 break;
1835
1836 case triton::extlibs::capstone::ARM_INS_ADDW:
1838 break;
1839
1840 case triton::extlibs::capstone::ARM_INS_ASR:
1842 break;
1843
1844 case triton::extlibs::capstone::ARM_INS_DCPS1:
1846 break;
1847
1848 case triton::extlibs::capstone::ARM_INS_DCPS2:
1850 break;
1851
1852 case triton::extlibs::capstone::ARM_INS_DCPS3:
1854 break;
1855
1856 case triton::extlibs::capstone::ARM_INS_IT:
1858 break;
1859
1860 case triton::extlibs::capstone::ARM_INS_LSL:
1862 break;
1863
1864 case triton::extlibs::capstone::ARM_INS_LSR:
1866 break;
1867
1868 case triton::extlibs::capstone::ARM_INS_ORN:
1870 break;
1871
1872 case triton::extlibs::capstone::ARM_INS_ROR:
1874 break;
1875
1876 case triton::extlibs::capstone::ARM_INS_RRX:
1878 break;
1879
1880 case triton::extlibs::capstone::ARM_INS_SUBW:
1882 break;
1883
1884 case triton::extlibs::capstone::ARM_INS_TBB:
1886 break;
1887
1888 case triton::extlibs::capstone::ARM_INS_TBH:
1890 break;
1891
1892 case triton::extlibs::capstone::ARM_INS_CBNZ:
1894 break;
1895
1896 case triton::extlibs::capstone::ARM_INS_CBZ:
1898 break;
1899
1900 case triton::extlibs::capstone::ARM_INS_POP:
1902 break;
1903
1904 case triton::extlibs::capstone::ARM_INS_PUSH:
1906 break;
1907
1908 // special instructions
1909 case triton::extlibs::capstone::ARM_INS_NOP:
1911 break;
1912
1913 case triton::extlibs::capstone::ARM_INS_YIELD:
1915 break;
1916
1917 case triton::extlibs::capstone::ARM_INS_WFE:
1919 break;
1920
1921 case triton::extlibs::capstone::ARM_INS_WFI:
1923 break;
1924
1925 case triton::extlibs::capstone::ARM_INS_SEV:
1927 break;
1928
1929 case triton::extlibs::capstone::ARM_INS_SEVL:
1931 break;
1932
1933 case triton::extlibs::capstone::ARM_INS_VPUSH:
1935 break;
1936
1937 case triton::extlibs::capstone::ARM_INS_VPOP:
1939 break;
1940
1941 default:
1943 break;
1944 }
1945
1946 return tritonId;
1947 }
1948
1949
1951 switch (id) {
1952 case ID_INS_LDRB:
1953 case ID_INS_LDRSB:
1954 case ID_INS_STRB:
1955 case ID_INS_TBB:
1956 return 1;
1957 case ID_INS_LDRH:
1958 case ID_INS_LDRSH:
1959 case ID_INS_STRH:
1960 case ID_INS_TBH:
1961 return 2;
1962 default:
1963 return 0;
1964 }
1965 }
1966
1967 }; /* arm32 namespace */
1968 }; /* arm namespace */
1969 }; /* arch namespace */
1970}; /* triton namespace */
TRITON_EXPORT triton::arch::register_e capstoneRegisterToTritonRegister(triton::uint32 id) const
Converts a capstone's register id to a triton's register id.
TRITON_EXPORT triton::uint32 capstoneInstructionToTritonInstruction(triton::uint32 id) const
Converts a capstone's instruction id to a triton's instruction id.
TRITON_EXPORT triton::arch::arm::shift_e capstoneShiftToTritonShift(triton::uint32 id) const
Converts a capstone's shift id to a triton's shift id.
TRITON_EXPORT triton::arch::arm::condition_e capstoneConditionToTritonCondition(triton::uint32 id) const
Converts a capstone's condition id to a triton's condition id.
TRITON_EXPORT Arm32Specifications(triton::arch::architecture_e)
Constructor.
TRITON_EXPORT triton::uint32 getMemoryOperandSpecialSize(triton::uint32 id) const
Returns memory access size if it is specified by instruction.
The exception class used by architectures.
register_e
Types of register.
Definition archEnums.hpp:68
@ ID_REG_INVALID
invalid = 0
Definition archEnums.hpp:69
shift_e
Types of shift.
condition_e
Types of condition.
@ ID_SHIFT_LSR
Logical Shift Right (immediate)
@ ID_SHIFT_LSR_REG
Logical Shift Right (register)
@ ID_SHIFT_ASR
Arithmetic Shift Right (immediate)
@ ID_SHIFT_ROR_REG
Rotate Right (register)
@ ID_SHIFT_ROR
Rotate Right (immediate)
@ ID_SHIFT_ASR_REG
Arithmetic Shift Right (register)
@ ID_SHIFT_RRX
Rotate Right with Extend (immediate)
@ ID_SHIFT_RRX_REG
Rotate Right with Extend (register)
@ ID_SHIFT_LSL_REG
Logical Shift Left (register)
@ ID_SHIFT_INVALID
invalid
@ ID_SHIFT_LSL
Logical Shift Left (immediate)
@ ID_CONDITION_HS
Higher or same (unsigned >=). C set.
@ ID_CONDITION_PL
Positive or zero. N clear.
@ ID_CONDITION_VC
No overflow. V clear.
@ ID_CONDITION_LE
Signed <=. Z set, N and V differ.
@ ID_CONDITION_VS
Overflow. V set.
@ ID_CONDITION_MI
Negative. N set.
@ ID_CONDITION_GE
Signed >=. N and V the same.
@ ID_CONDITION_GT
Signed >. Z clear, N and V the same.
@ ID_CONDITION_HI
Higher (unsigned >). C set and Z clear.
@ ID_CONDITION_NE
Not equal. Z clear.
@ ID_CONDITION_AL
Always. Any flags. This suffix is normally omitted.
@ ID_CONDITION_LO
Lower (unsigned <). C clear.
@ ID_CONDITION_LT
Signed <. N and V differ.
@ ID_CONDITION_LS
Lower or same (unsigned <=). C clear or Z set.
@ ID_CONDITION_INVALID
invalid
@ ID_CONDITION_EQ
Equal. Z set.
std::uint32_t uint32
unisgned 32-bits
The Triton namespace.