From 5f01f6103ddd28d9572b108751603307fc8be631 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 28 Nov 2013 23:29:13 +0000 Subject: [PATCH] Add some misc opcodes and remove duplicates --- libr/asm/d/x86 | 74 ++++++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/libr/asm/d/x86 b/libr/asm/d/x86 index af24b07d78..7c6e57488f 100644 --- a/libr/asm/d/x86 +++ b/libr/asm/d/x86 @@ -10,6 +10,12 @@ addsd=add scalar double-fp values addss=add scalar single-fp values addsubpd=packed double-fp add/subtract addsubps=packed single-fp add/subtract +aesdec=perform one round of an AES decryption flow +aesdeclast=perform the last round of an AES decryption flow +aesenc=perform one round of an AES encryption flow +aesenclast=perform the last round of an AES encryption flow +aesimc=assist in aes Inverse Mix Columns +aeskeygenassist=assist in AES round key generation and=binary and operation between src and dst, stores result on dst andnpd=bitwise logical and not of packed double-fp values andnps=bitwise logical and not of packed single-fp values @@ -28,7 +34,6 @@ bt=bit test btc=bit test and complement btr=bit test and reset bts=bit test and set -call"=> "calls a subroutine, pushes eip into stack (esp) call=calls a subroutine, push eip into the stack (esp) callf=call procedure cbw=convert byte to word @@ -70,26 +75,26 @@ comiss=compare scalar ordered single-fp values and set eflags cpuid=cpu identification crc32=accumulate crc32 value cs=cs segment override prefix -cvtdq2pd=convert packed dw integers to double-fp values -cvtdq2ps=convert packed dw integers to single-fp values -cvtpd2dq=convert packed double-fp values to dw integers -cvtpd2pi=convert packed double-fp values to dw integers -cvtpd2ps=convert packed double-fp values to single-fp values -cvtpi2pd=convert packed dw integers to double-fp values -cvtpi2ps=convert packed dw integers to single-fp values -cvtps2dq=convert packed single-fp values to dw integers -cvtps2pd=convert packed single-fp values to double-fp values -cvtps2pi=convert packed single-fp values to dw integers +cvtdq2pd=convert packed dw integers to double-fp values +cvtdq2ps=convert packed dw integers to single-fp values +cvtpd2dq=convert packed double-fp values to dw integers +cvtpd2pi=convert packed double-fp values to dw integers +cvtpd2ps=convert packed double-fp values to single-fp values +cvtpi2pd=convert packed dw integers to double-fp values +cvtpi2ps=convert packed dw integers to single-fp values +cvtps2dq=convert packed single-fp values to dw integers +cvtps2pd=convert packed single-fp values to double-fp values +cvtps2pi=convert packed single-fp values to dw integers cvtsd2si=convert scalar double-fp value to dw integer cvtsd2ss=convert scalar double-fp value to scalar single-fp value cvtsi2sd=convert dw integer to scalar double-fp value cvtsi2ss=convert dw integer to scalar single-fp value cvtss2sd=convert scalar single-fp value to scalar double-fp value cvtss2si=convert scalar single-fp value to dw integer -cvttpd2dq=convert with trunc. packed double-fp values to dw integers -cvttpd2pi=convert with trunc. packed double-fp values to dw integers -cvttps2dq=convert with trunc. packed single-fp values to dw integers -cvttps2pi=convert with trunc. packed single-fp values to dw integers +cvttpd2dq=convert with trunc. packed double-fp values to dw integers +cvttpd2pi=convert with trunc. packed double-fp values to dw integers +cvttps2dq=convert with trunc. packed single-fp values to dw integers +cvttps2pi=convert with trunc. packed single-fp values to dw integers cvttsd2si=conv. with trunc. scalar double-fp value to signed dw int cvttss2si=convert with trunc. scalar single-fp value to dw integer cwd=convert word to doubleword @@ -97,7 +102,6 @@ cwde=convert word to doubleword daa=decimal adjust al after addition das=decimal adjust al after subtraction dec=decrement by 1 -dec=register-- div=unsigned divide divpd=divide packed double-fp values divps=divide packed single-fp values @@ -110,7 +114,7 @@ emms=empty mmx technology state enter=alias for push ebp mov ebp, esp es=es segment override prefix extractps=extract packed single-fp value -f2xm1=compute 2x-1 +f2xm1=compute pow(2,x) - 1 fabs=absolute value fadd=floating point add faddp=floating point add and pop @@ -145,7 +149,6 @@ ficom=integer compare ficomp=integer compare and pop fidiv=integer divide fidivr=integer divide reserved -fidivr=integer reverse divide fild=load integer fimul=integer multiply fincstp=increment floating-point stack pointer @@ -218,10 +221,10 @@ gs=gs segment override prefix haddpd=packed double-fp horizontal add haddps=packed single-fp horizontal add hint_nop=hintable nop -hlt=halt hlt=stop process until external interrupt received hsubpd=packed double-fp horizontal subtract hsubps=packed single-fp horizontal subtract +icebp=Single byte single-step exception / Invoke ICE idiv=signed divide imul=signed multiply in=input from port @@ -260,9 +263,6 @@ js=jump short if sign (sf=1) jz=jump short if zero/equal (zf=0) lahf=load status flags into ah register lar=load acces right byte -lldt=load local descriptor table register -lsl=load segemtn limit -loadall=load all of the cpu registers lddqu=load unaligned integer 128 bits ldmxcsr=load mxcsr register lds=load far pointer @@ -274,15 +274,18 @@ lfs=load far pointer lgdt=load global descriptor table register lgs=load far pointer lidt=load interrupt descriptor table register +lldt=load local descriptor table register lmsw=load machine status word loadall=load all of the cpu registers +loadalld=loads All Registers from memory address es:edi lock=instruction prefix to setup the LOCK pin lods=load string -lodsb=al = (byte)DS:[esi] (esi++) -lodsw=ax = (word)DS:[esi] (esi+=2) +lodsb=Load string byte +lodsw=Load string word loop=decrement count; jump short if ecx!=0 loopnz=decrement count; jump short if ecx!=0 and zf=0 loopz=decrement count; jump short if ecx!=0 and zf=1 +lsl=load segment limit lss=load far pointer ltr=load task register maskmovdqu=store selected bytes of double quadword @@ -372,6 +375,7 @@ pavgb=average packed integers pavgw=average packed integers pblendvb=variable blend packed bytes pblendw=blend packed words +pclmulqdq=performs a carry-less multiplication of two 64-bit polynomials over the finite field GF(2). pcmpeqb=compare packed data for equal pcmpeqd=compare packed data for equal pcmpeqq=compare packed qword data for equal @@ -384,9 +388,9 @@ pcmpgtw=compare packed signed integers for greater than pcmpistri=packed compare implicit length strings, return index pcmpistrm=packed compare implicit length strings, return mask pextrb=extract a byte from an XMM register and insert the value into a general-purpose register or memory -pextrw=extract a word from an XMM register and insert the value into a general-purpose register or memory pextrd=extract a dword from an XMM register and insert the value into a general-purpose register or memory pextrq=extract a qword from an XMM register and insert the value into a general-purpose register or memory +pextrw=extract a word from an XMM register and insert the value into a general-purpose register or memory phaddd=packed horizontal add phaddsw=packed horizontal add and saturate phaddw=packed horizontal add @@ -412,18 +416,18 @@ pminub=minimum of packed unsigned byte integers pminud=minimum of packed unsigned dword integers pminuw=minimum of packed unsigned word integers pmovmskb=move byte mask -pmovsxbw=sign extend the lower 8-bit integer of each packed word element into packed signed word integers -pmovzxbw=zero extend the lower 8-bit integer of each packed word element into packed signed word integers pmovsxbd=sign extend the lower 8-bit integer of each packed dword element into packed signed dword integers -pmovzxbd=zero extend the lower 8-bit integer of each packed dword element into packed signed dword integers -pmovsxwd=sign extend the lower 16-bit integer of each packed dword element into packed signed dword integers -pmovzxwd=zero extend the lower 16-bit integer of each packed dword element into packed signed dword integers pmovsxbq=sign extend the lower 8-bit integer of each packed qword element into packed signed qword integers -pmovzxbq=zero extend the lower 8-bit integer of each packed qword element into packed signed qword integers -pmovsxwq=sign extend the lower 16-bit integer of each packed qword element into packed signed qword integers -pmovzxwq=zero extend the lower 16-bit integer of each packed qword element into packed signed qword integers +pmovsxbw=sign extend the lower 8-bit integer of each packed word element into packed signed word integers pmovsxdq=sign extend the lower 32-bit integer of each packed qword element into packed signed qword integers +pmovsxwd=sign extend the lower 16-bit integer of each packed dword element into packed signed dword integers +pmovsxwq=sign extend the lower 16-bit integer of each packed qword element into packed signed qword integers +pmovzxbd=zero extend the lower 8-bit integer of each packed dword element into packed signed dword integers +pmovzxbq=zero extend the lower 8-bit integer of each packed qword element into packed signed qword integers +pmovzxbw=zero extend the lower 8-bit integer of each packed word element into packed signed word integers pmovzxdq=zero extend the lower 32-bit integer of each packed qword element into packed signed qword integers +pmovzxwd=zero extend the lower 16-bit integer of each packed dword element into packed signed dword integers +pmovzxwq=zero extend the lower 16-bit integer of each packed qword element into packed signed qword integers pmulhrsw=packed multiply high with round and scale pmulhuw=multiply packed unsigned integers and store high result pmulhw=multiply packed signed integers and store high result @@ -521,7 +525,6 @@ roundss=round scalar single-fp values rsm=resume from system management mode rsqrtps=compute recipr. of square roots of packed single-fp values rsqrtss=compute recipr. of square root of scalar single-fp value -sahf=eflags(SF:ZF:X:AF:X:PF:X:CF) = AX sahf=store ah into flags sal=arithmetic left shift salc=set al if carry @@ -582,6 +585,7 @@ sysret=return from fast system call test=set eflags after comparing two registers (AF, CF, OF, PF, SF, ZF) ucomisd=unordered compare scalar double-fp values and set eflags ucomiss=unordered compare scalar single-fp values and set eflags +ud1=undefined instruction ud2=undefined instruction unpckhpd=unpack and interleave high packed double-fp values unpckhps=unpack and interleave high packed single-fp values @@ -599,7 +603,7 @@ vmresume=resume virtual machine vmwrite=write field to virtual-machine control structure vmxoff=leave vmx operation vmxon=enter vmx operation -wait"=> "stop process execution until TEST pin activated +wait=stop process execution until TEST pin activated wbinvd=write back and invalidate cache wrmsr=write to model specific register xadd=exchange and add