-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathconst.go
783 lines (769 loc) · 8.6 KB
/
const.go
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
package udis86
// All possible types of objects in UDis86
const (
UD_NONE = iota
/* 8 bit GPRs */
UD_R_AL
UD_R_CL
UD_R_DL
UD_R_BL
UD_R_AH
UD_R_CH
UD_R_DH
UD_R_BH
UD_R_SPL
UD_R_BPL
UD_R_SIL
UD_R_DIL
UD_R_R8B
UD_R_R9B
UD_R_R10B
UD_R_R11B
UD_R_R12B
UD_R_R13B
UD_R_R14B
UD_R_R15B
/* 16 bit GPRs */
UD_R_AX
UD_R_CX
UD_R_DX
UD_R_BX
UD_R_SP
UD_R_BP
UD_R_SI
UD_R_DI
UD_R_R8W
UD_R_R9W
UD_R_R10W
UD_R_R11W
UD_R_R12W
UD_R_R13W
UD_R_R14W
UD_R_R15W
/* 32 bit GPRs */
UD_R_EAX
UD_R_ECX
UD_R_EDX
UD_R_EBX
UD_R_ESP
UD_R_EBP
UD_R_ESI
UD_R_EDI
UD_R_R8D
UD_R_R9D
UD_R_R10D
UD_R_R11D
UD_R_R12D
UD_R_R13D
UD_R_R14D
UD_R_R15D
/* 64 bit GPRs */
UD_R_RAX
UD_R_RCX
UD_R_RDX
UD_R_RBX
UD_R_RSP
UD_R_RBP
UD_R_RSI
UD_R_RDI
UD_R_R8
UD_R_R9
UD_R_R10
UD_R_R11
UD_R_R12
UD_R_R13
UD_R_R14
UD_R_R15
/* segment registers */
UD_R_ES
UD_R_CS
UD_R_SS
UD_R_DS
UD_R_FS
UD_R_GS
/* control registers*/
UD_R_CR0
UD_R_CR1
UD_R_CR2
UD_R_CR3
UD_R_CR4
UD_R_CR5
UD_R_CR6
UD_R_CR7
UD_R_CR8
UD_R_CR9
UD_R_CR10
UD_R_CR11
UD_R_CR12
UD_R_CR13
UD_R_CR14
UD_R_CR15
/* debug registers */
UD_R_DR0
UD_R_DR1
UD_R_DR2
UD_R_DR3
UD_R_DR4
UD_R_DR5
UD_R_DR6
UD_R_DR7
UD_R_DR8
UD_R_DR9
UD_R_DR10
UD_R_DR11
UD_R_DR12
UD_R_DR13
UD_R_DR14
UD_R_DR15
/* mmx registers */
UD_R_MM0
UD_R_MM1
UD_R_MM2
UD_R_MM3
UD_R_MM4
UD_R_MM5
UD_R_MM6
UD_R_MM7
/* x87 registers */
UD_R_ST0
UD_R_ST1
UD_R_ST2
UD_R_ST3
UD_R_ST4
UD_R_ST5
UD_R_ST6
UD_R_ST7
/* extended multimedia registers */
UD_R_XMM0
UD_R_XMM1
UD_R_XMM2
UD_R_XMM3
UD_R_XMM4
UD_R_XMM5
UD_R_XMM6
UD_R_XMM7
UD_R_XMM8
UD_R_XMM9
UD_R_XMM10
UD_R_XMM11
UD_R_XMM12
UD_R_XMM13
UD_R_XMM14
UD_R_XMM15
UD_R_RIP
/* Operand Types */
UD_OP_REG
UD_OP_MEM
UD_OP_PTR
UD_OP_IMM
UD_OP_JIMM
UD_OP_CONST
)
// Mnemonic codes used by UDis86.Mnemonic
const (
UD_Iinvalid = iota
UD_I3dnow
UD_Inone
UD_Idb
UD_Ipause
UD_Iaaa
UD_Iaad
UD_Iaam
UD_Iaas
UD_Iadc
UD_Iadd
UD_Iaddpd
UD_Iaddps
UD_Iaddsd
UD_Iaddss
UD_Iand
UD_Iandpd
UD_Iandps
UD_Iandnpd
UD_Iandnps
UD_Iarpl
UD_Imovsxd
UD_Ibound
UD_Ibsf
UD_Ibsr
UD_Ibswap
UD_Ibt
UD_Ibtc
UD_Ibtr
UD_Ibts
UD_Icall
UD_Icbw
UD_Icwde
UD_Icdqe
UD_Iclc
UD_Icld
UD_Iclflush
UD_Iclgi
UD_Icli
UD_Iclts
UD_Icmc
UD_Icmovo
UD_Icmovno
UD_Icmovb
UD_Icmovae
UD_Icmovz
UD_Icmovnz
UD_Icmovbe
UD_Icmova
UD_Icmovs
UD_Icmovns
UD_Icmovp
UD_Icmovnp
UD_Icmovl
UD_Icmovge
UD_Icmovle
UD_Icmovg
UD_Icmp
UD_Icmppd
UD_Icmpps
UD_Icmpsb
UD_Icmpsw
UD_Icmpsd
UD_Icmpsq
UD_Icmpss
UD_Icmpxchg
UD_Icmpxchg8b
UD_Icomisd
UD_Icomiss
UD_Icpuid
UD_Icvtdq2pd
UD_Icvtdq2ps
UD_Icvtpd2dq
UD_Icvtpd2pi
UD_Icvtpd2ps
UD_Icvtpi2ps
UD_Icvtpi2pd
UD_Icvtps2dq
UD_Icvtps2pi
UD_Icvtps2pd
UD_Icvtsd2si
UD_Icvtsd2ss
UD_Icvtsi2ss
UD_Icvtss2si
UD_Icvtss2sd
UD_Icvttpd2pi
UD_Icvttpd2dq
UD_Icvttps2dq
UD_Icvttps2pi
UD_Icvttsd2si
UD_Icvtsi2sd
UD_Icvttss2si
UD_Icwd
UD_Icdq
UD_Icqo
UD_Idaa
UD_Idas
UD_Idec
UD_Idiv
UD_Idivpd
UD_Idivps
UD_Idivsd
UD_Idivss
UD_Iemms
UD_Ienter
UD_If2xm1
UD_Ifabs
UD_Ifadd
UD_Ifaddp
UD_Ifbld
UD_Ifbstp
UD_Ifchs
UD_Ifclex
UD_Ifcmovb
UD_Ifcmove
UD_Ifcmovbe
UD_Ifcmovu
UD_Ifcmovnb
UD_Ifcmovne
UD_Ifcmovnbe
UD_Ifcmovnu
UD_Ifucomi
UD_Ifcom
UD_Ifcom2
UD_Ifcomp3
UD_Ifcomi
UD_Ifucomip
UD_Ifcomip
UD_Ifcomp
UD_Ifcomp5
UD_Ifcompp
UD_Ifcos
UD_Ifdecstp
UD_Ifdiv
UD_Ifdivp
UD_Ifdivr
UD_Ifdivrp
UD_Ifemms
UD_Iffree
UD_Iffreep
UD_Ificom
UD_Ificomp
UD_Ifild
UD_Ifncstp
UD_Ifninit
UD_Ifiadd
UD_Ifidivr
UD_Ifidiv
UD_Ifisub
UD_Ifisubr
UD_Ifist
UD_Ifistp
UD_Ifisttp
UD_Ifld
UD_Ifld1
UD_Ifldl2t
UD_Ifldl2e
UD_Ifldlpi
UD_Ifldlg2
UD_Ifldln2
UD_Ifldz
UD_Ifldcw
UD_Ifldenv
UD_Ifmul
UD_Ifmulp
UD_Ifimul
UD_Ifnop
UD_Ifpatan
UD_Ifprem
UD_Ifprem1
UD_Ifptan
UD_Ifrndint
UD_Ifrstor
UD_Ifnsave
UD_Ifscale
UD_Ifsin
UD_Ifsincos
UD_Ifsqrt
UD_Ifstp
UD_Ifstp1
UD_Ifstp8
UD_Ifstp9
UD_Ifst
UD_Ifnstcw
UD_Ifnstenv
UD_Ifnstsw
UD_Ifsub
UD_Ifsubp
UD_Ifsubr
UD_Ifsubrp
UD_Iftst
UD_Ifucom
UD_Ifucomp
UD_Ifucompp
UD_Ifxam
UD_Ifxch
UD_Ifxch4
UD_Ifxch7
UD_Ifxrstor
UD_Ifxsave
UD_Ifpxtract
UD_Ifyl2x
UD_Ifyl2xp1
UD_Ihlt
UD_Iidiv
UD_Iin
UD_Iimul
UD_Iinc
UD_Iinsb
UD_Iinsw
UD_Iinsd
UD_Iint1
UD_Iint3
UD_Iint
UD_Iinto
UD_Iinvd
UD_Iinvept
UD_Iinvlpg
UD_Iinvlpga
UD_Iinvvpid
UD_Iiretw
UD_Iiretd
UD_Iiretq
UD_Ijo
UD_Ijno
UD_Ijb
UD_Ijae
UD_Ijz
UD_Ijnz
UD_Ijbe
UD_Ija
UD_Ijs
UD_Ijns
UD_Ijp
UD_Ijnp
UD_Ijl
UD_Ijge
UD_Ijle
UD_Ijg
UD_Ijcxz
UD_Ijecxz
UD_Ijrcxz
UD_Ijmp
UD_Ilahf
UD_Ilar
UD_Ilddqu
UD_Ildmxcsr
UD_Ilds
UD_Ilea
UD_Iles
UD_Ilfs
UD_Ilgs
UD_Ilidt
UD_Ilss
UD_Ileave
UD_Ilfence
UD_Ilgdt
UD_Illdt
UD_Ilmsw
UD_Ilock
UD_Ilodsb
UD_Ilodsw
UD_Ilodsd
UD_Ilodsq
UD_Iloopnz
UD_Iloope
UD_Iloop
UD_Ilsl
UD_Iltr
UD_Imaskmovq
UD_Imaxpd
UD_Imaxps
UD_Imaxsd
UD_Imaxss
UD_Imfence
UD_Iminpd
UD_Iminps
UD_Iminsd
UD_Iminss
UD_Imonitor
UD_Imontmul
UD_Imov
UD_Imovapd
UD_Imovaps
UD_Imovd
UD_Imovhpd
UD_Imovhps
UD_Imovlhps
UD_Imovlpd
UD_Imovlps
UD_Imovhlps
UD_Imovmskpd
UD_Imovmskps
UD_Imovntdq
UD_Imovnti
UD_Imovntpd
UD_Imovntps
UD_Imovntq
UD_Imovq
UD_Imovsb
UD_Imovsw
UD_Imovsd
UD_Imovsq
UD_Imovss
UD_Imovsx
UD_Imovupd
UD_Imovups
UD_Imovzx
UD_Imul
UD_Imulpd
UD_Imulps
UD_Imulsd
UD_Imulss
UD_Imwait
UD_Ineg
UD_Inop
UD_Inot
UD_Ior
UD_Iorpd
UD_Iorps
UD_Iout
UD_Ioutsb
UD_Ioutsw
UD_Ioutsd
UD_Ioutsq
UD_Ipacksswb
UD_Ipackssdw
UD_Ipackuswb
UD_Ipaddb
UD_Ipaddw
UD_Ipaddd
UD_Ipaddsb
UD_Ipaddsw
UD_Ipaddusb
UD_Ipaddusw
UD_Ipand
UD_Ipandn
UD_Ipavgb
UD_Ipavgw
UD_Ipcmpeqb
UD_Ipcmpeqw
UD_Ipcmpeqd
UD_Ipcmpgtb
UD_Ipcmpgtw
UD_Ipcmpgtd
UD_Ipextrb
UD_Ipextrd
UD_Ipextrq
UD_Ipextrw
UD_Ipinsrw
UD_Ipmaddwd
UD_Ipmaxsw
UD_Ipmaxub
UD_Ipminsw
UD_Ipminub
UD_Ipmovmskb
UD_Ipmulhuw
UD_Ipmulhw
UD_Ipmullw
UD_Ipop
UD_Ipopa
UD_Ipopad
UD_Ipopfw
UD_Ipopfd
UD_Ipopfq
UD_Ipor
UD_Iprefetch
UD_Iprefetchnta
UD_Iprefetcht0
UD_Iprefetcht1
UD_Iprefetcht2
UD_Ipsadbw
UD_Ipshufw
UD_Ipsllw
UD_Ipslld
UD_Ipsllq
UD_Ipsraw
UD_Ipsrad
UD_Ipsrlw
UD_Ipsrld
UD_Ipsrlq
UD_Ipsubb
UD_Ipsubw
UD_Ipsubd
UD_Ipsubsb
UD_Ipsubsw
UD_Ipsubusb
UD_Ipsubusw
UD_Ipunpckhbw
UD_Ipunpckhwd
UD_Ipunpckhdq
UD_Ipunpcklbw
UD_Ipunpcklwd
UD_Ipunpckldq
UD_Ipi2fw
UD_Ipi2fd
UD_Ipf2iw
UD_Ipf2id
UD_Ipfnacc
UD_Ipfpnacc
UD_Ipfcmpge
UD_Ipfmin
UD_Ipfrcp
UD_Ipfrsqrt
UD_Ipfsub
UD_Ipfadd
UD_Ipfcmpgt
UD_Ipfmax
UD_Ipfrcpit1
UD_Ipfrsqit1
UD_Ipfsubr
UD_Ipfacc
UD_Ipfcmpeq
UD_Ipfmul
UD_Ipfrcpit2
UD_Ipmulhrw
UD_Ipswapd
UD_Ipavgusb
UD_Ipush
UD_Ipusha
UD_Ipushad
UD_Ipushfw
UD_Ipushfd
UD_Ipushfq
UD_Ipxor
UD_Ircl
UD_Ircr
UD_Irol
UD_Iror
UD_Ircpps
UD_Ircpss
UD_Irdmsr
UD_Irdpmc
UD_Irdtsc
UD_Irdtscp
UD_Irepne
UD_Irep
UD_Iret
UD_Iretf
UD_Irsm
UD_Irsqrtps
UD_Irsqrtss
UD_Isahf
UD_Isalc
UD_Isar
UD_Ishl
UD_Ishr
UD_Isbb
UD_Iscasb
UD_Iscasw
UD_Iscasd
UD_Iscasq
UD_Iseto
UD_Isetno
UD_Isetb
UD_Isetnb
UD_Isetz
UD_Isetnz
UD_Isetbe
UD_Iseta
UD_Isets
UD_Isetns
UD_Isetp
UD_Isetnp
UD_Isetl
UD_Isetge
UD_Isetle
UD_Isetg
UD_Isfence
UD_Isgdt
UD_Ishld
UD_Ishrd
UD_Ishufpd
UD_Ishufps
UD_Isidt
UD_Isldt
UD_Ismsw
UD_Isqrtps
UD_Isqrtpd
UD_Isqrtsd
UD_Isqrtss
UD_Istc
UD_Istd
UD_Istgi
UD_Isti
UD_Iskinit
UD_Istmxcsr
UD_Istosb
UD_Istosw
UD_Istosd
UD_Istosq
UD_Istr
UD_Isub
UD_Isubpd
UD_Isubps
UD_Isubsd
UD_Isubss
UD_Iswapgs
UD_Isyscall
UD_Isysenter
UD_Isysexit
UD_Isysret
UD_Itest
UD_Iucomisd
UD_Iucomiss
UD_Iud2
UD_Iunpckhpd
UD_Iunpckhps
UD_Iunpcklps
UD_Iunpcklpd
UD_Iverr
UD_Iverw
UD_Ivmcall
UD_Ivmclear
UD_Ivmxon
UD_Ivmptrld
UD_Ivmptrst
UD_Ivmlaunch
UD_Ivmresume
UD_Ivmxoff
UD_Ivmread
UD_Ivmwrite
UD_Ivmrun
UD_Ivmmcall
UD_Ivmload
UD_Ivmsave
UD_Iwait
UD_Iwbinvd
UD_Iwrmsr
UD_Ixadd
UD_Ixchg
UD_Ixlatb
UD_Ixor
UD_Ixorpd
UD_Ixorps
UD_Ixcryptecb
UD_Ixcryptcbc
UD_Ixcryptctr
UD_Ixcryptcfb
UD_Ixcryptofb
UD_Ixsha1
UD_Ixsha256
UD_Ixstore
UD_Imovdqa
UD_Imovdq2q
UD_Imovdqu
UD_Imovq2dq
UD_Ipaddq
UD_Ipsubq
UD_Ipmuludq
UD_Ipshufhw
UD_Ipshuflw
UD_Ipshufd
UD_Ipslldq
UD_Ipsrldq
UD_Ipunpckhqdq
UD_Ipunpcklqdq
UD_Iaddsubpd
UD_Iaddsubps
UD_Ihaddpd
UD_Ihaddps
UD_Ihsubpd
UD_Ihsubps
UD_Imovddup
UD_Imovshdup
UD_Imovsldup
UD_Ipabsb
UD_Ipabsw
UD_Ipabsd
UD_Ipsignb
UD_Iphaddw
UD_Iphaddd
UD_Iphaddsw
UD_Ipmaddubsw
UD_Iphsubw
UD_Iphsubd
UD_Iphsubsw
UD_Ipsignd
UD_Ipsignw
UD_Ipmulhrsw
UD_Ipalignr
UD_Ipblendvb
UD_Ipmuldq
UD_Ipminsb
UD_Ipminsd
UD_Ipminuw
UD_Ipminud
UD_Ipmaxsb
UD_Ipmaxsd
UD_Ipmaxud
UD_Ipmulld
UD_Iphminposuw
UD_Iroundps
UD_Iroundpd
UD_Iroundss
UD_Iroundsd
UD_Iblendpd
UD_Ipblendw
UD_Iblendps
UD_Iblendvpd
UD_Iblendvps
UD_Idpps
UD_Idppd
UD_Impsadbw
UD_Iextractps
)