Sie sind auf Seite 1von 8

Opcodes'

tables
Compact
This file is free to modify and re-use, with no restrictions, even commercially.
it's an OpenOffice document.
1 grab its content via: svn export https://corkami.googlecode.com/svn/trunk/oOo/opcodes_tables_compact
2 rezip with subdirectories as opcodes_tables_compact.ods
opcodes tables are available as compact and complete form.
Feb 21, 2012
Ange Albertini 2012 http://corkami.com

inspired by the work of Daniel Plohmann

Creative Commons Attribution 3.0 Unported License

x0
0x
1x
2x
3x
4x
5x
6x
7x
8x
9x
Ax
Bx
Cx

x1

x2

x3

aconst_
null
*m1
*0
*ipush
ldc*
b* 1
s*
* 1 *_w 2
2
...lload_*
*2
*3
*0
*1
...*aload
f*
d*
a*
b*
...lstore_*
*1
*2
*3
*0
...*astore
l*
f*
d*
a*
*add
i*
l*
f*
d*
*rem
i*
l*
f*
d*
*or
*xor
i*
l*
i*
l*
...d2*
i2*
*f
*b
*c
*s
...if_icmp*
*ne
*lt
*ge
*gt
...*return
*static 2
a*
*
get* put*
monitor*
check instance
cast 2
of
2 *enter *exit
nop

x4

x5

*1

iconst_*
*2
*3

*2_w 2
fload_*
*2
c*

x6

i*

l*

*3

*0

s*
fstore_*
*2

*1
b*

i*
*3

c*

s*
*sub

i*

l*

f*
*neg

i*
iinc

l*

f*
i2*
*f

*l

fcmp*

lcmp

*l
*g
if_acmp*
*eq
*ne

*le

*field
get*
*put
multi
(pref.)
wide anewarray

Fx

*virtual
3

*null

x7

x8

x9

xA

xB

xC xD

xE

fconst_*
dconst_*
*0
*1
*2
*0
*1
iload_*
lload_*...
1
d*
a*
*0
*1
*2
*3
*0
*1
dload_*
aload_*
*aload...
*1
*2
*3
*0
*1
*2
*3
i*
l*
*store
istore_*
lstore_*...
1
l*
f*
d*
a*
*0
*1
*2
*3
*0
dstore_*
astore_*
*astore...
*0
*1
*2
*3
*0
*1
*2
*3
i*
pop*
dup*
swap
*
*2
*
*_x1
*_x2
*2 *2_x1 *2_x2
*mul
*div
d*
i*
l*
f*
d*
i*
l*
f*
d*
*shl
*shr
*ushr
*and
d*
i*
l*
i*
l*
i*
l*
i*
l*
l2*
f2*
d2*...
*d
*i
*f
*d
*i
*l
*d
*i
*l
dcmp*
if*
2 if_icmp*..
*l
*g
*eq
*ne
*lt
*ge
*gt
*le
*eq
2
*switch
*return...
v
2
goto
jsr
ret
table* lookup* i*
l*
f*
d*
2
2
1
invoke*
*newarray array
xxunusedxxx1
new
athrow
*static 2 *interface 4
* 1 a* 2 length
2 *special 2
2
if*
break
2
goto_w
jsr_w
point
*nonnull
4
4
*4
*load
f*

*5

lconst_*
*0
*1

*1
misc

arithmetic

flow

constants

logical

method

immediates
locals

conversion

object

comparison

system

stack

conditional

undefined

xF

impdep*
*2

JVM (Java)

x0

x1

0x

nop

break

1x

starg.s

2x
3x
4x

x2

x3

x4

x5

x6

x7

x8

x9

*0

ldarg.*
*1
*2

*3

*0

ldloc.*
*1

*2

*3

*m1

*0

ldloc
*.s
*a.s
ldc.*
*i8
*r4

*i4
...b*.s
gt

le

lt
b*.un
gt

5x

*ref

*i1

6x

or

xor

shl

7x

cpobj

ldobj

ldstr

8x

stsfld

stobj

Ax

*i1
...stelem.*
*r4

*i2

*r8

*ref

Dx

ldtoken

Ex

conv.u

FE
0x

arglist

FE
1x
misc
system

*u2

*eq
end
filter

ge

le

lt

b*.un.s
gt
switch

stind.*
*i4
*i8
shr

neg
*.un
cast
newobj
isinst
class
conv.ovf.i*.un
4
2
8
ldelem.*
*u2
*i4
*u4
unbox.
ldelem stelem
any
*

Bx
Cx

ne

*i2

*u1

dup

*r8

ne
...ldind.*
*ref

9x

ge

stlock.s ldnull

ref
anyval
conv.*
*u1

*i1
ck
finite
*i

c*
*gt
*gt.un
un
volatile.
aligned.

*u1

*i2

conv.ovf.*
*i
*u

*1

*2

pop

jmp

le

lt

*i1

*u1

*i2

*r4

*r8

not

*i1

*i2

conv.ovf.u*.un
4
2

*i8

*i

conv.ovf.*
*u2
*i4
mkref
any
add.ovf*
*
*.un

*i
br
*false
*u2

add

conv.r.un
1

*3
call*

sub

tail.

*lt.un
init
obj

immediates
stack

arithmetic

fields

logical

array

args

method

conversion

references

locals

conditional

object

flow

constants

indirects

exception

comparison

ret

*1

xC

*5

*i4

*u4

*u4

*i8

*u8

mul.ovf*
*
*.un

init
blk

*3

*.s

ldarg*
*a.s

*i8

*i

sub.ovf*
*
*.un

ldarg*
*a
re
no.
throw
*

xF

starg

*8
eq
*le

*i

*r4

div*

mul

*ref

xE

*6
*7
br*
*false.s *true.s
b*
*ge
*gt

*.s
*eq

*r8

xD

stloc.*
*2

*true

*r4

virt

constrained. cpblk

*0
ldc.i4.*
*4

xB

rem*

*
*.un
conv.*
*i4
*i8
*r4
*r8
ldfld*
unbox throw
*
*a
conv.ovf.*.un
box
8
i
u

ld*ftn
*lt

xA

*.un

*u4

*u8

*i1

*i2

end
finally

*a
ref
sizeof
anytype

and
callvirt

ldlen

ldelema

*i4

stelem.*...
*i8

leave*

ldloc*
*

*lt
ldind.*
*r8

ldsfld*
*
*a

stfld
newarr

*s
b*.s...
ge

*.s

stloc

stind.i

localloc

read
only.

prefix

undefined

Common Intermediate Language (.Net)

x0
0x
1x
2x
3x

nop

x1

x2

move*
/from16

return*
-wide
-object
instance
array
of
length
cmp*-double cmpg
long

4x
5x
6x
7x
8x
9x

...aput
-char

-short

*
...invoke-*
-direct
...neg*
-double

-wide
-static
long

add
...*-long
and

sub

sub

Cx

add
...*-long/2addr
and

Dx

add

Ex

shl

Fx

invokedirect-empty

Ax
Bx

or

or

sub
*-int/lit8
shr

x3

x4

x5

x6

x7

x8

x9

move-wide*
move-object*
/16
*
/from16
/16
*
/from16
/16
const
const-wide
/4
/16
*
/high16
/16
/32
*
/high16
new*
filled-new-array
fillgoto
throw
*instance *array
*
-range array-data
*
/16
if-*
eq
ne
lt
ge
gt
le
eq
ne
aget
*
-wide
-object
-bool
-byte
-char
iget
*
-wide -object
-bool
-byte
-char
-short
*
sget
-object -bool -byte
-char
-short
*
-wide
-object
invoke-*/range
-interface
virtual
super
-direct -static -interface
int-to-*
float-to
long-to-*
float
double int
float
double
int
long
double
*-int
mul
div
and
or
xor
shl
shr
rem
*-float
xor
shl
shr
ushr
sub
mul
div
add
*-int/2addr
mul
div
and
or
xor
shl
shr
rem
*-float/2addr
xor
shl
shr
ushr
sub
mul
div
add
*-int/lit16
mul
div
and
or
xor
add
sub
rem
ushr

iget-*quick
-wide -object

misc

object

conversion

moves

flow

arithmetic

method

conditional

literals

transfer

system

logical

undefined

iput-*quick
-wide
-object

virtual

xA

xB

xC

xD

xE

xF

move-result*
movereturn*
*
-wide
-object exception
-void
*
const-string
constmonitor
check
*
-jumbo
enter
exit
class
cast
*-switch
cmp*-float
cmp*-double
/32
packed* sparse*
l
g
l
if-*z
lt
ge
gt
le
aput...
-short
*
-wide
-object
-bool
-byte
iput
-wide
-object
-bool
-byte
-char
-short
sput
invoke-*...
-bool
-byte
-char
-short
virtual
super
neg*
not*
neg*
not*
neg*...
-int
-int
-long
-long
-float
double-to-*
int-to-*
int
long
float
byte
char
short
*-long...
ushr
add
sub
mul
div
rem
*-double
sub
mul
div
rem
add
rem
*-long/2addr...
ushr
add
sub
mul
div
rem
*-double/2addr
sub
mul
div
rem
add
rem
*-int/lit8
mul
div
and
or
xor
rem
execute
inline

invoke-*-quick
virtual/range super super/range

Dalvik Virtual Machine (android)

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF

OR

PUSH TWO
CS BYTE

0x

SBB

PUSH DS
POP DS

1x

0x

ADD

1x

ADC

2x

AND

ES:

DAA

SUB

CS:

DAS

2x

3x

XOR

SS:

AAA

CMP

DS:

AAS

3x

PUSH/POP
ES/SS

4x

INC / DEC

4x

5x

PUSH /POP

5x

6x

PUSHA
POPA

BOUND

ARPL

FS: GS:

oper. addr
size override

7x
ADD/ADC/AND/XOR
OR/SBB/SUB/CMP

9x

NOP

Ax

TEST

XCHG

MOV EAX

MOVS

CMPS

Bx
RETN LES / LDS

shifts

rotations
LOOPs
LOCK

Fx

LEA MOV POP

TEST

PUSHF / LAHF

STOS / LODS

SCAS

exclusive
access

IceBP

MOV

ENTER
LEAVE

RETF INT3 INT

REPcc: HLT

IN / OUT
CMC

TEST/NOT/NEG
[i]MUL/[i]DIV

CALL / JMP

Clear/Set Flags

misc

arithmetic

flow

memory/reg

logical

group

flags

prefix

obsolete

comparison

system

stack

conditional

hidden

usermode only, no extra instruction set

INTO IRET

pre
fetch

HINT NOP

MOV CR/DR
SYS
ENTER

RDTSC

CMOVcc

6x

8x

Jcc

9x

SETcc

FS CPUID
Ax PUSH
POP FS

BT

Cx

XADD

PUSH GS
POP GS

SHLD

BTS SHRD

*FENCE

IMUL

BT
POP
BTC BSF / BSR MOVZX
MOVZX CNT UD
Btx
CMP
XCHG

BSWAP

Dx

{FPU}

AAM AAD SALC XLAT


JECXZ

prefetch
nta

Bx CMPXCHG LSS BTR LFS / LGS

MOV

Dx
Ex

MOV
CBW/CWD
CALL WAIT
CWDE/CDQ

XCHG

UD2

7x

Jcc

8x

Cx

INS / OUTS

PUSH IMUL PUSH IMUL

SLDT SGDT
STR SIDT
VERx SMSW

IN / OUT
INC/DEC
INC CALL/JMP
DEC PUSH

Ex
Fx

x86

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
TWO
BYTE

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF

0x

ADD

OR

0x

1x

ADC

SBB

2x

AND

ES:

SUB

CS:

2x

3x

XOR

SS:

CMP

DS:

3x

REX:

4x

5x

PUSH /POP

5x

MOVSXD

FS: GS:

oper. addr
size override

7x
ADD/ADC/AND/XOR
OR/SBB/SUB/CMP

9x

NOP

Ax

TEST

MOV EAX

MOVS

CMPS

RETN

shifts

VEX2/3

MOV

rotations
LOOPs
LOCK

Fx

LEA MOV POP


WAIT

TEST

PUSHF / LAHF

STOS / LODS

SCAS

exclusive
access

IceBP

ENTER
LEAVE

RETF INT3 INT

REPcc: HLT

IN / OUT
CMC

TEST/NOT/NEG
[i]MUL/[i]DIV

CALL

JMP

Clear/Set Flags

misc

arithmetic

flow

memory/reg

logical

group

flags

prefix

obsolete

comparison

system

stack

conditional

hidden

usermode only, no extra instruction set

IRET

SYS
ENTER

RDTSC

CMOVcc

6x

8x

Jcc

9x

SETcc

FS CPUID
Ax PUSH
POP FS

BT

Cx

XADD

PUSH GS
POP GS

SHLD

BTS SHRD

*FENCE

IMUL

BT
POP
BTC BSF / BSR MOVZX
MOVZX CNT UD
Btx
CMP
XCHG

BSWAP

Dx

{FPU}

XLAT
JECXZ

HINT NOP

MOV CR/DR

Bx CMPXCHG LSS BTR LFS / LGS

MOV

Dx
Ex

MOV
CBW/CWD
CWDE/CDQ
CDQE/CQO

XCHG

prefetch
nta

pre
fetch

7x

XCHG

Bx
Cx

INS / OUTS

PUSH IMUL PUSH IMUL

Jcc

8x

UD2

1x

4x

6x

SLDT SGDT
STR SIDT
VERx SMSW

IN / OUT
INC/DEC
INC CALL/JMP
DEC PUSH

Ex
Fx

x86-64

Android
.Net
Java

1 http://source.android.com/tech/dalvik/dalvik-bytecode.html
2 http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
1 http://www.ecma-international.org/publications/standards/Ecma-335.htm p355-469
2 http://www.asukaze.net/etc/cil/opcode.html
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions.doc.html

x0

0x

SubLeq
SubLeq

Das könnte Ihnen auch gefallen