libTriton version 1.0 build 1592
Loading...
Searching...
No Matches
x86Semantics.hpp
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
8#ifndef TRITON_X86SEMANTICS_H
9#define TRITON_X86SEMANTICS_H
10
11#include <triton/archEnums.hpp>
13#include <triton/dllexport.hpp>
15#include <triton/modes.hpp>
19
20
21
23namespace triton {
30 namespace arch {
38 namespace x86 {
48 private:
50 triton::arch::Architecture* architecture;
51
54
57
60
63
66
67 public:
69 TRITON_EXPORT x86Semantics(triton::arch::Architecture* architecture,
72 const triton::modes::SharedModes& modes,
73 const triton::ast::SharedAstContext& astCtxt);
74
77
78 private:
80 triton::uint64 alignAddStack_s(triton::arch::Instruction& inst, triton::uint32 delta);
81
83 triton::uint64 alignSubStack_s(triton::arch::Instruction& inst, triton::uint32 delta);
84
86 void clearFlag_s(triton::arch::Instruction& inst, const triton::arch::Register& flag, std::string comment="");
87
89 void setFlag_s(triton::arch::Instruction& inst, const triton::arch::Register& flag, std::string comment="");
90
92 void undefined_s(triton::arch::Instruction& inst, const triton::arch::Register& reg);
93
95 void controlFlow_s(triton::arch::Instruction& inst);
96
99
101 void af_s(triton::arch::Instruction& inst,
106 bool vol=false);
107
109 void afAaa_s(triton::arch::Instruction& inst,
114 bool vol=false);
115
117 void afNeg_s(triton::arch::Instruction& inst,
121 bool vol=false);
122
124 void cfAaa_s(triton::arch::Instruction& inst,
129 bool vol=false);
130
132 void cfAdd_s(triton::arch::Instruction& inst,
137 bool vol=false);
138
140 void cfBlsi_s(triton::arch::Instruction& inst,
144 bool vol=false);
145
147 void cfBlsmsk_s(triton::arch::Instruction& inst,
151 bool vol=false);
152
154 void cfBlsr_s(triton::arch::Instruction& inst,
158 bool vol=false);
159
161 void cfImul_s(triton::arch::Instruction& inst,
166 bool vol=false);
167
169 void cfLzcnt_s(triton::arch::Instruction& inst,
173 bool vol=false);
174
176 void cfMul_s(triton::arch::Instruction& inst,
180 bool vol=false);
181
183 void cfNeg_s(triton::arch::Instruction& inst,
187 bool vol=false);
188
190 void cfPtest_s(triton::arch::Instruction& inst,
193 bool vol=false);
194
196 void cfRcl_s(triton::arch::Instruction& inst,
200 bool vol=false);
201
203 void cfRcr_s(triton::arch::Instruction& inst,
208 bool vol=false);
209
211 void cfRol_s(triton::arch::Instruction& inst,
215 bool vol=false);
216
218 void cfRor_s(triton::arch::Instruction& inst,
222 bool vol=false);
223
225 void cfSar_s(triton::arch::Instruction& inst,
230 bool vol=false);
231
233 void cfShl_s(triton::arch::Instruction& inst,
238 bool vol=false);
239
241 void cfShld_s(triton::arch::Instruction& inst,
247 bool vol=false);
248
250 void cfShr_s(triton::arch::Instruction& inst,
255 bool vol=false);
256
258 void cfShrd_s(triton::arch::Instruction& inst,
264 bool vol=false);
265
267 void cfSub_s(triton::arch::Instruction& inst,
272 bool vol=false);
273
275 void cfTzcnt_s(triton::arch::Instruction& inst,
279 bool vol=false);
280
282 void ofAdd_s(triton::arch::Instruction& inst,
287 bool vol=false);
288
290 void ofImul_s(triton::arch::Instruction& inst,
295 bool vol=false);
296
298 void ofMul_s(triton::arch::Instruction& inst,
302 bool vol=false);
303
305 void ofNeg_s(triton::arch::Instruction& inst,
309 bool vol=false);
310
312 void ofRol_s(triton::arch::Instruction& inst,
316 bool vol=false);
317
319 void ofRor_s(triton::arch::Instruction& inst,
323 bool vol=false);
324
326 void ofRcr_s(triton::arch::Instruction& inst,
331 bool vol=false);
332
334 void ofSar_s(triton::arch::Instruction& inst,
338 bool vol=false);
339
341 void ofShl_s(triton::arch::Instruction& inst,
346 bool vol=false);
347
349 void ofShld_s(triton::arch::Instruction& inst,
355 bool vol=false);
356
358 void ofShr_s(triton::arch::Instruction& inst,
363 bool vol=false);
364
366 void ofShrd_s(triton::arch::Instruction& inst,
372 bool vol=false);
373
375 void ofSub_s(triton::arch::Instruction& inst,
380 bool vol=false);
381
383 void pf_s(triton::arch::Instruction& inst,
386 bool vol=false);
387
389 void pfShl_s(triton::arch::Instruction& inst,
393 bool vol=false);
394
396 void sf_s(triton::arch::Instruction& inst,
399 bool vol=false);
400
402 void sfShl_s(triton::arch::Instruction& inst,
406 bool vol=false);
407
409 void sfShld_s(triton::arch::Instruction& inst,
415 bool vol=false);
416
418 void sfShrd_s(triton::arch::Instruction& inst,
424 bool vol=false);
425
427 void zf_s(triton::arch::Instruction& inst,
430 bool vol=false);
431
433 void zfBsf_s(triton::arch::Instruction& inst,
437 bool vol=false);
438
440 void zfShl_s(triton::arch::Instruction& inst,
444 bool vol=false);
445
447 void aaa_s(triton::arch::Instruction& inst);
448
450 void aad_s(triton::arch::Instruction& inst);
451
453 void aam_s(triton::arch::Instruction& inst);
454
456 void aas_s(triton::arch::Instruction& inst);
457
459 void adc_s(triton::arch::Instruction& inst);
460
462 void adcx_s(triton::arch::Instruction& inst);
463
465 void add_s(triton::arch::Instruction& inst);
466
468 void and_s(triton::arch::Instruction& inst);
469
471 void andn_s(triton::arch::Instruction& inst);
472
474 void andnpd_s(triton::arch::Instruction& inst);
475
477 void andnps_s(triton::arch::Instruction& inst);
478
480 void andpd_s(triton::arch::Instruction& inst);
481
483 void andps_s(triton::arch::Instruction& inst);
484
486 void bextr_s(triton::arch::Instruction& inst);
487
489 void blsi_s(triton::arch::Instruction& inst);
490
492 void blsmsk_s(triton::arch::Instruction& inst);
493
495 void blsr_s(triton::arch::Instruction& inst);
496
498 void bsf_s(triton::arch::Instruction& inst);
499
501 void bsr_s(triton::arch::Instruction& inst);
502
504 void bswap_s(triton::arch::Instruction& inst);
505
507 void bt_s(triton::arch::Instruction& inst);
508
510 void btc_s(triton::arch::Instruction& inst);
511
513 void btr_s(triton::arch::Instruction& inst);
514
516 void bts_s(triton::arch::Instruction& inst);
517
519 void call_s(triton::arch::Instruction& inst);
520
522 void cbw_s(triton::arch::Instruction& inst);
523
525 void cdq_s(triton::arch::Instruction& inst);
526
528 void cdqe_s(triton::arch::Instruction& inst);
529
531 void clc_s(triton::arch::Instruction& inst);
532
534 void cld_s(triton::arch::Instruction& inst);
535
537 void clflush_s(triton::arch::Instruction& inst);
538
540 void clts_s(triton::arch::Instruction& inst);
541
543 void cli_s(triton::arch::Instruction& inst);
544
546 void cmc_s(triton::arch::Instruction& inst);
547
549 void cmova_s(triton::arch::Instruction& inst);
550
552 void cmovae_s(triton::arch::Instruction& inst);
553
555 void cmovb_s(triton::arch::Instruction& inst);
556
558 void cmovbe_s(triton::arch::Instruction& inst);
559
561 void cmove_s(triton::arch::Instruction& inst);
562
564 void cmovg_s(triton::arch::Instruction& inst);
565
567 void cmovge_s(triton::arch::Instruction& inst);
568
570 void cmovl_s(triton::arch::Instruction& inst);
571
573 void cmovle_s(triton::arch::Instruction& inst);
574
576 void cmovne_s(triton::arch::Instruction& inst);
577
579 void cmovno_s(triton::arch::Instruction& inst);
580
582 void cmovnp_s(triton::arch::Instruction& inst);
583
585 void cmovns_s(triton::arch::Instruction& inst);
586
588 void cmovo_s(triton::arch::Instruction& inst);
589
591 void cmovp_s(triton::arch::Instruction& inst);
592
594 void cmovs_s(triton::arch::Instruction& inst);
595
597 void cmp_s(triton::arch::Instruction& inst);
598
600 void cmpsb_s(triton::arch::Instruction& inst);
601
603 void cmpsd_s(triton::arch::Instruction& inst);
604
606 void cmpsq_s(triton::arch::Instruction& inst);
607
609 void cmpsw_s(triton::arch::Instruction& inst);
610
612 void cmpxchg_s(triton::arch::Instruction& inst);
613
615 void cmpxchg16b_s(triton::arch::Instruction& inst);
616
618 void cmpxchg8b_s(triton::arch::Instruction& inst);
619
621 void cpuid_s(triton::arch::Instruction& inst);
622
624 void cqo_s(triton::arch::Instruction& inst);
625
627 void cwd_s(triton::arch::Instruction& inst);
628
630 void cwde_s(triton::arch::Instruction& inst);
631
633 void dec_s(triton::arch::Instruction& inst);
634
636 void div_s(triton::arch::Instruction& inst);
637
639 void endbr32_s(triton::arch::Instruction& inst);
640
642 void endbr64_s(triton::arch::Instruction& inst);
643
645 void extractps_s(triton::arch::Instruction& inst);
646
648 void fxrstor_s(triton::arch::Instruction& inst);
649
651 void fxrstor64_s(triton::arch::Instruction& inst);
652
654 void fxsave_s(triton::arch::Instruction& inst);
655
657 void fxsave64_s(triton::arch::Instruction& inst);
658
660 void idiv_s(triton::arch::Instruction& inst);
661
663 void imul_s(triton::arch::Instruction& inst);
664
666 void inc_s(triton::arch::Instruction& inst);
667
669 void invd_s(triton::arch::Instruction& inst);
670
672 void invlpg_s(triton::arch::Instruction& inst);
673
675 void ja_s(triton::arch::Instruction& inst);
676
678 void jae_s(triton::arch::Instruction& inst);
679
681 void jb_s(triton::arch::Instruction& inst);
682
684 void jbe_s(triton::arch::Instruction& inst);
685
687 void jcxz_s(triton::arch::Instruction& inst);
688
690 void je_s(triton::arch::Instruction& inst);
691
693 void jecxz_s(triton::arch::Instruction& inst);
694
696 void jg_s(triton::arch::Instruction& inst);
697
699 void jge_s(triton::arch::Instruction& inst);
700
702 void jl_s(triton::arch::Instruction& inst);
703
705 void jle_s(triton::arch::Instruction& inst);
706
708 void jmp_s(triton::arch::Instruction& inst);
709
711 void jne_s(triton::arch::Instruction& inst);
712
714 void jno_s(triton::arch::Instruction& inst);
715
717 void jnp_s(triton::arch::Instruction& inst);
718
720 void jns_s(triton::arch::Instruction& inst);
721
723 void jo_s(triton::arch::Instruction& inst);
724
726 void jp_s(triton::arch::Instruction& inst);
727
729 void jrcxz_s(triton::arch::Instruction& inst);
730
732 void js_s(triton::arch::Instruction& inst);
733
735 void lahf_s(triton::arch::Instruction& inst);
736
738 void lddqu_s(triton::arch::Instruction& inst);
739
741 void ldmxcsr_s(triton::arch::Instruction& inst);
742
744 void lea_s(triton::arch::Instruction& inst);
745
747 void leave_s(triton::arch::Instruction& inst);
748
750 void lfence_s(triton::arch::Instruction& inst);
751
753 void lodsb_s(triton::arch::Instruction& inst);
754
756 void lodsd_s(triton::arch::Instruction& inst);
757
759 void lodsq_s(triton::arch::Instruction& inst);
760
762 void lodsw_s(triton::arch::Instruction& inst);
763
765 void loop_s(triton::arch::Instruction& inst);
766
768 void lzcnt_s(triton::arch::Instruction& inst);
769
771 void int3_s(triton::arch::Instruction& inst);
772
774 void mfence_s(triton::arch::Instruction& inst);
775
777 void mov_s(triton::arch::Instruction& inst);
778
780 void movabs_s(triton::arch::Instruction& inst);
781
783 void movapd_s(triton::arch::Instruction& inst);
784
786 void movaps_s(triton::arch::Instruction& inst);
787
789 void movbe_s(triton::arch::Instruction& inst);
790
792 void movd_s(triton::arch::Instruction& inst);
793
795 void movddup_s(triton::arch::Instruction& inst);
796
798 void movdq2q_s(triton::arch::Instruction& inst);
799
801 void movdqa_s(triton::arch::Instruction& inst);
802
804 void movdqu_s(triton::arch::Instruction& inst);
805
807 void movhlps_s(triton::arch::Instruction& inst);
808
810 void movhpd_s(triton::arch::Instruction& inst);
811
813 void movhps_s(triton::arch::Instruction& inst);
814
816 void movlhps_s(triton::arch::Instruction& inst);
817
819 void movlpd_s(triton::arch::Instruction& inst);
820
822 void movlps_s(triton::arch::Instruction& inst);
823
825 void movmskpd_s(triton::arch::Instruction& inst);
826
828 void movmskps_s(triton::arch::Instruction& inst);
829
831 void movntdq_s(triton::arch::Instruction& inst);
832
834 void movnti_s(triton::arch::Instruction& inst);
835
837 void movntpd_s(triton::arch::Instruction& inst);
838
840 void movntps_s(triton::arch::Instruction& inst);
841
843 void movntq_s(triton::arch::Instruction& inst);
844
846 void movshdup_s(triton::arch::Instruction& inst);
847
849 void movsldup_s(triton::arch::Instruction& inst);
850
852 void movq_s(triton::arch::Instruction& inst);
853
855 void movq2dq_s(triton::arch::Instruction& inst);
856
858 void movsb_s(triton::arch::Instruction& inst);
859
861 void movsd_s(triton::arch::Instruction& inst);
862
864 void movupd_s(triton::arch::Instruction& inst);
865
867 void movups_s(triton::arch::Instruction& inst);
868
870 void movss_s(triton::arch::Instruction& inst);
871
873 void movsq_s(triton::arch::Instruction& inst);
874
876 void movsw_s(triton::arch::Instruction& inst);
877
879 void movsx_s(triton::arch::Instruction& inst);
880
882 void movsxd_s(triton::arch::Instruction& inst);
883
885 void movzx_s(triton::arch::Instruction& inst);
886
888 void mul_s(triton::arch::Instruction& inst);
889
891 void mulx_s(triton::arch::Instruction& inst);
892
894 void neg_s(triton::arch::Instruction& inst);
895
897 void nop_s(triton::arch::Instruction& inst);
898
900 void not_s(triton::arch::Instruction& inst);
901
903 void or_s(triton::arch::Instruction& inst);
904
906 void orpd_s(triton::arch::Instruction& inst);
907
909 void orps_s(triton::arch::Instruction& inst);
910
912 void packuswb_s(triton::arch::Instruction& inst);
913
915 void packssdw_s(triton::arch::Instruction& inst);
916
918 void packsswb_s(triton::arch::Instruction& inst);
919
921 void paddb_s(triton::arch::Instruction& inst);
922
924 void paddd_s(triton::arch::Instruction& inst);
925
927 void paddq_s(triton::arch::Instruction& inst);
928
930 void paddw_s(triton::arch::Instruction& inst);
931
933 void palignr_s(triton::arch::Instruction& inst);
934
936 void pand_s(triton::arch::Instruction& inst);
937
939 void pandn_s(triton::arch::Instruction& inst);
940
942 void pause_s(triton::arch::Instruction& inst);
943
945 void pavgb_s(triton::arch::Instruction& inst);
946
948 void pavgw_s(triton::arch::Instruction& inst);
949
951 void pcmpeqb_s(triton::arch::Instruction& inst);
952
954 void pcmpeqd_s(triton::arch::Instruction& inst);
955
957 void pcmpeqw_s(triton::arch::Instruction& inst);
958
960 void pcmpgtb_s(triton::arch::Instruction& inst);
961
963 void pcmpgtd_s(triton::arch::Instruction& inst);
964
966 void pcmpgtw_s(triton::arch::Instruction& inst);
967
969 void pextrb_s(triton::arch::Instruction& inst);
970
972 void pextrd_s(triton::arch::Instruction& inst);
973
975 void pextrq_s(triton::arch::Instruction& inst);
976
978 void pextrw_s(triton::arch::Instruction& inst);
979
981 void pinsrb_s(triton::arch::Instruction& inst);
982
984 void pinsrd_s(triton::arch::Instruction& inst);
985
987 void pinsrq_s(triton::arch::Instruction& inst);
988
990 void pinsrw_s(triton::arch::Instruction& inst);
991
993 void pmaddwd_s(triton::arch::Instruction& inst);
994
996 void pmaxsb_s(triton::arch::Instruction& inst);
997
999 void pmaxsd_s(triton::arch::Instruction& inst);
1000
1002 void pmaxsw_s(triton::arch::Instruction& inst);
1003
1005 void pmaxub_s(triton::arch::Instruction& inst);
1006
1008 void pmaxud_s(triton::arch::Instruction& inst);
1009
1011 void pmaxuw_s(triton::arch::Instruction& inst);
1012
1014 void pminsb_s(triton::arch::Instruction& inst);
1015
1017 void pminsd_s(triton::arch::Instruction& inst);
1018
1020 void pminsw_s(triton::arch::Instruction& inst);
1021
1023 void pminub_s(triton::arch::Instruction& inst);
1024
1026 void pminud_s(triton::arch::Instruction& inst);
1027
1029 void pminuw_s(triton::arch::Instruction& inst);
1030
1032 void pmovmskb_s(triton::arch::Instruction& inst);
1033
1035 void pmovsxbd_s(triton::arch::Instruction& inst);
1036
1038 void pmovsxbq_s(triton::arch::Instruction& inst);
1039
1041 void pmovsxbw_s(triton::arch::Instruction& inst);
1042
1044 void pmovsxdq_s(triton::arch::Instruction& inst);
1045
1047 void pmovsxwd_s(triton::arch::Instruction& inst);
1048
1050 void pmovsxwq_s(triton::arch::Instruction& inst);
1051
1053 void pmovzxbd_s(triton::arch::Instruction& inst);
1054
1056 void pmovzxbq_s(triton::arch::Instruction& inst);
1057
1059 void pmovzxbw_s(triton::arch::Instruction& inst);
1060
1062 void pmovzxdq_s(triton::arch::Instruction& inst);
1063
1065 void pmovzxwd_s(triton::arch::Instruction& inst);
1066
1068 void pmovzxwq_s(triton::arch::Instruction& inst);
1069
1071 void pmulhw_s(triton::arch::Instruction& inst);
1072
1074 void pmulld_s(triton::arch::Instruction& inst);
1075
1077 void pmullw_s(triton::arch::Instruction& inst);
1078
1080 void pmuludq_s(triton::arch::Instruction& inst);
1081
1083 void popcnt_s(triton::arch::Instruction& inst);
1084
1086 void pop_s(triton::arch::Instruction& inst);
1087
1089 void popal_s(triton::arch::Instruction& inst);
1090
1092 void popf_s(triton::arch::Instruction& inst);
1093
1095 void popfd_s(triton::arch::Instruction& inst);
1096
1098 void popfq_s(triton::arch::Instruction& inst);
1099
1101 void por_s(triton::arch::Instruction& inst);
1102
1104 void prefetchx_s(triton::arch::Instruction& inst);
1105
1107 void pshufb_s(triton::arch::Instruction& inst);
1108
1110 void pshufd_s(triton::arch::Instruction& inst);
1111
1113 void pshufhw_s(triton::arch::Instruction& inst);
1114
1116 void pshuflw_s(triton::arch::Instruction& inst);
1117
1119 void pshufw_s(triton::arch::Instruction& inst);
1120
1122 void pslld_s(triton::arch::Instruction& inst);
1123
1125 void pslldq_s(triton::arch::Instruction& inst);
1126
1128 void psllq_s(triton::arch::Instruction& inst);
1129
1131 void psllw_s(triton::arch::Instruction& inst);
1132
1134 void psrad_s(triton::arch::Instruction& inst);
1135
1137 void psraw_s(triton::arch::Instruction& inst);
1138
1140 void psrld_s(triton::arch::Instruction& inst);
1141
1143 void psrldq_s(triton::arch::Instruction& inst);
1144
1146 void psrlq_s(triton::arch::Instruction& inst);
1147
1149 void psrlw_s(triton::arch::Instruction& inst);
1150
1152 void psubb_s(triton::arch::Instruction& inst);
1153
1155 void psubd_s(triton::arch::Instruction& inst);
1156
1158 void psubq_s(triton::arch::Instruction& inst);
1159
1161 void psubw_s(triton::arch::Instruction& inst);
1162
1164 void ptest_s(triton::arch::Instruction& inst);
1165
1167 void punpckhbw_s(triton::arch::Instruction& inst);
1168
1170 void punpckhdq_s(triton::arch::Instruction& inst);
1171
1173 void punpckhqdq_s(triton::arch::Instruction& inst);
1174
1176 void punpckhwd_s(triton::arch::Instruction& inst);
1177
1179 void punpcklbw_s(triton::arch::Instruction& inst);
1180
1182 void punpckldq_s(triton::arch::Instruction& inst);
1183
1185 void punpcklqdq_s(triton::arch::Instruction& inst);
1186
1188 void punpcklwd_s(triton::arch::Instruction& inst);
1189
1191 void push_s(triton::arch::Instruction& inst);
1192
1194 void pushal_s(triton::arch::Instruction& inst);
1195
1197 void pushfd_s(triton::arch::Instruction& inst);
1198
1200 void pushfq_s(triton::arch::Instruction& inst);
1201
1203 void pxor_s(triton::arch::Instruction& inst);
1204
1206 void rcl_s(triton::arch::Instruction& inst);
1207
1209 void rcr_s(triton::arch::Instruction& inst);
1210
1212 void rdtsc_s(triton::arch::Instruction& inst);
1213
1215 void ret_s(triton::arch::Instruction& inst);
1216
1218 void rol_s(triton::arch::Instruction& inst);
1219
1221 void ror_s(triton::arch::Instruction& inst);
1222
1224 void rorx_s(triton::arch::Instruction& inst);
1225
1227 void sahf_s(triton::arch::Instruction& inst);
1228
1230 void sar_s(triton::arch::Instruction& inst);
1231
1233 void sarx_s(triton::arch::Instruction& inst);
1234
1236 void sbb_s(triton::arch::Instruction& inst);
1237
1239 void scasb_s(triton::arch::Instruction& inst);
1240
1242 void scasd_s(triton::arch::Instruction& inst);
1243
1245 void scasq_s(triton::arch::Instruction& inst);
1246
1248 void scasw_s(triton::arch::Instruction& inst);
1249
1251 void seta_s(triton::arch::Instruction& inst);
1252
1254 void setae_s(triton::arch::Instruction& inst);
1255
1257 void setb_s(triton::arch::Instruction& inst);
1258
1260 void setbe_s(triton::arch::Instruction& inst);
1261
1263 void sete_s(triton::arch::Instruction& inst);
1264
1266 void setg_s(triton::arch::Instruction& inst);
1267
1269 void setge_s(triton::arch::Instruction& inst);
1270
1272 void setl_s(triton::arch::Instruction& inst);
1273
1275 void setle_s(triton::arch::Instruction& inst);
1276
1278 void setne_s(triton::arch::Instruction& inst);
1279
1281 void setno_s(triton::arch::Instruction& inst);
1282
1284 void setnp_s(triton::arch::Instruction& inst);
1285
1287 void setns_s(triton::arch::Instruction& inst);
1288
1290 void seto_s(triton::arch::Instruction& inst);
1291
1293 void setp_s(triton::arch::Instruction& inst);
1294
1296 void sets_s(triton::arch::Instruction& inst);
1297
1299 void sfence_s(triton::arch::Instruction& inst);
1300
1302 void shl_s(triton::arch::Instruction& inst);
1303
1305 void shld_s(triton::arch::Instruction& inst);
1306
1308 void shlx_s(triton::arch::Instruction& inst);
1309
1311 void shr_s(triton::arch::Instruction& inst);
1312
1314 void shrd_s(triton::arch::Instruction& inst);
1315
1317 void shrx_s(triton::arch::Instruction& inst);
1318
1320 void stc_s(triton::arch::Instruction& inst);
1321
1323 void std_s(triton::arch::Instruction& inst);
1324
1326 void sti_s(triton::arch::Instruction& inst);
1327
1329 void stmxcsr_s(triton::arch::Instruction& inst);
1330
1332 void stosb_s(triton::arch::Instruction& inst);
1333
1335 void stosd_s(triton::arch::Instruction& inst);
1336
1338 void stosq_s(triton::arch::Instruction& inst);
1339
1341 void stosw_s(triton::arch::Instruction& inst);
1342
1344 void sub_s(triton::arch::Instruction& inst);
1345
1347 void syscall_s(triton::arch::Instruction& inst);
1348
1350 void sysenter_s(triton::arch::Instruction& inst);
1351
1353 void test_s(triton::arch::Instruction& inst);
1354
1356 void tzcnt_s(triton::arch::Instruction& inst);
1357
1359 void unpckhpd_s(triton::arch::Instruction& inst);
1360
1362 void unpckhps_s(triton::arch::Instruction& inst);
1363
1365 void unpcklpd_s(triton::arch::Instruction& inst);
1366
1368 void unpcklps_s(triton::arch::Instruction& inst);
1369
1371 void verr_s(triton::arch::Instruction& inst);
1372
1374 void verw_s(triton::arch::Instruction& inst);
1375
1377 void vextracti128_s(triton::arch::Instruction& inst);
1378
1380 void vmovd_s(triton::arch::Instruction& inst);
1381
1383 void vmovdqa_s(triton::arch::Instruction& inst);
1384
1386 void vmovdqu_s(triton::arch::Instruction& inst);
1387
1389 void vmovntdq_s(triton::arch::Instruction& inst);
1390
1392 void vmovq_s(triton::arch::Instruction& inst);
1393
1395 void vmovsd_s(triton::arch::Instruction& inst);
1396
1398 void vmovaps_s(triton::arch::Instruction& inst);
1399
1401 void vmovups_s(triton::arch::Instruction& inst);
1402
1404 void vpackuswb_s(triton::arch::Instruction& inst);
1405
1407 void vpackssdw_s(triton::arch::Instruction& inst);
1408
1410 void vpacksswb_s(triton::arch::Instruction& inst);
1411
1413 void vpaddb_s(triton::arch::Instruction& inst);
1414
1416 void vpaddd_s(triton::arch::Instruction& inst);
1417
1419 void vpaddw_s(triton::arch::Instruction& inst);
1420
1422 void vpand_s(triton::arch::Instruction& inst);
1423
1425 void vpbroadcastb_s(triton::arch::Instruction& inst);
1426
1428 void vpcmpeqb_s(triton::arch::Instruction& inst);
1429
1431 void vpcmpeqd_s(triton::arch::Instruction& inst);
1432
1434 void vpcmpeqq_s(triton::arch::Instruction& inst);
1435
1437 void vpcmpeqw_s(triton::arch::Instruction& inst);
1438
1440 void vpcmpgtb_s(triton::arch::Instruction& inst);
1441
1443 void vpcmpgtd_s(triton::arch::Instruction& inst);
1444
1446 void vpcmpgtw_s(triton::arch::Instruction& inst);
1447
1449 void vpmaddwd_s(triton::arch::Instruction& inst);
1450
1452 void vpmovmskb_s(triton::arch::Instruction& inst);
1453
1455 void vpminub_s(triton::arch::Instruction& inst);
1456
1458 void vpmulhw_s(triton::arch::Instruction& inst);
1459
1461 void vpmullw_s(triton::arch::Instruction& inst);
1462
1464 void vpandn_s(triton::arch::Instruction& inst);
1465
1467 void vperm2i128_s(triton::arch::Instruction& inst);
1468
1470 void vpermq_s(triton::arch::Instruction& inst);
1471
1473 void vpextrb_s(triton::arch::Instruction& inst);
1474
1476 void vpextrd_s(triton::arch::Instruction& inst);
1477
1479 void vpextrq_s(triton::arch::Instruction& inst);
1480
1482 void vpextrw_s(triton::arch::Instruction& inst);
1483
1485 void vpor_s(triton::arch::Instruction& inst);
1486
1488 void vpshufd_s(triton::arch::Instruction& inst);
1489
1491 void vpsignw_s(triton::arch::Instruction& inst);
1492
1494 void vpslldq_s(triton::arch::Instruction& inst);
1495
1497 void vpsllw_s(triton::arch::Instruction& inst);
1498
1500 void vpsrad_s(triton::arch::Instruction& inst);
1501
1503 void vpsraw_s(triton::arch::Instruction& inst);
1504
1506 void vpsrldq_s(triton::arch::Instruction& inst);
1507
1509 void vpsrlw_s(triton::arch::Instruction& inst);
1510
1512 void vpsubb_s(triton::arch::Instruction& inst);
1513
1515 void vpsubd_s(triton::arch::Instruction& inst);
1516
1518 void vpsubq_s(triton::arch::Instruction& inst);
1519
1521 void vpsubw_s(triton::arch::Instruction& inst);
1522
1524 void vptest_s(triton::arch::Instruction& inst);
1525
1527 void vpunpckhbw_s(triton::arch::Instruction& inst);
1528
1530 void vpunpckhdq_s(triton::arch::Instruction& inst);
1531
1533 void vpunpckhqdq_s(triton::arch::Instruction& inst);
1534
1536 void vpunpckhwd_s(triton::arch::Instruction& inst);
1537
1539 void vpunpcklbw_s(triton::arch::Instruction& inst);
1540
1542 void vpunpckldq_s(triton::arch::Instruction& inst);
1543
1545 void vpunpcklqdq_s(triton::arch::Instruction& inst);
1546
1548 void vpunpcklwd_s(triton::arch::Instruction& inst);
1549
1551 void vpxor_s(triton::arch::Instruction& inst);
1552
1554 void vxorps_s(triton::arch::Instruction& inst);
1555
1557 void wait_s(triton::arch::Instruction& inst);
1558
1560 void wbinvd_s(triton::arch::Instruction& inst);
1561
1563 void xadd_s(triton::arch::Instruction& inst);
1564
1566 void xchg_s(triton::arch::Instruction& inst);
1567
1569 void xor_s(triton::arch::Instruction& inst);
1570
1572 void xorpd_s(triton::arch::Instruction& inst);
1573
1575 void xorps_s(triton::arch::Instruction& inst);
1576 };
1577
1579 };
1581 };
1583};
1584
1585#endif /* TRITON_X86SEMANTICS_H */
The abstract architecture class.
This class is used to represent an instruction.
This class is used as operand wrapper.
This class is used when an instruction has a register operand.
Definition register.hpp:44
This interface is used as abstract semantics interface. All ISA semantics must use this interface.
TRITON_EXPORT x86Semantics(triton::arch::Architecture *architecture, triton::engines::symbolic::SymbolicEngine *symbolicEngine, triton::engines::taint::TaintEngine *taintEngine, const triton::modes::SharedModes &modes, const triton::ast::SharedAstContext &astCtxt)
Constructor.
TRITON_EXPORT triton::arch::exception_e buildSemantics(triton::arch::Instruction &inst)
Builds the semantics of the instruction. Returns triton::arch::NO_FAULT if succeed.
std::shared_ptr< triton::ast::AbstractNode > SharedAbstractNode
Shared Abstract Node.
Definition ast.hpp:59
std::shared_ptr< triton::ast::AstContext > SharedAstContext
Shared AST context.
Definition ast.hpp:65
std::shared_ptr< triton::modes::Modes > SharedModes
Shared Modes.
Definition modes.hpp:66
std::shared_ptr< triton::engines::symbolic::SymbolicExpression > SharedSymbolicExpression
Shared Symbolic Expression.
Definition ast.hpp:40
std::uint64_t uint64
unisgned 64-bits
std::uint32_t uint32
unisgned 32-bits
The Triton namespace.