Gladir.com - Assembleur et Pascal - Référence du code machine de la machine virtuel de Java

Voici une table de référence du jeu d'instructions de la machine virtuel de Java sous la syntaxe Jasmin.

Instruction Inline Nom technique Description
aaload 032h retrieve object reference from array  
aastore 053h store object reference in array  
aconst_null 001h push null

Empile la valeur nul

aload 019h retrieve object reference from local variable

Empile un nombre

aload_0 02Ah retrieve object reference from local variable 0

Empile 0

aload_1 02Bh retrieve object reference from local variable 1

Empile 1

aload_2 02Ch retrieve object reference from local variable 2

Empile 2

aload_3 02Dh retrieve object reference from local variable 3

Empile 3

anewarray 0BDh allocate new array for objects

Alloue un nouveau tableau

areturn 0B0h return from method with object reference result

Retourne avec les objets référencés

arraylength 0BEh get length of array

Demande la longueur du tableau

astore 03Ah store object reference in local variable

Stocke la référence dans la variable local

astore_0 04Bh store object reference in local variable 0

Stocke la référence dans la variable local 0

astore_1 04Ch store object reference in local variable 1

Stocke la référence dans la variable local 1

astore_2 04Dh store object reference in local variable 2

Stocke la référence dans la variable local 2

astore_3 04Eh store object reference in local variable 3

Stocke la référence dans la variable local 3

athrow 0BFh throw an exception  
baload 033h retrieve byte/boolean from array

Recherche un entrer octet/booléen d'un tableau

bastore 054h store in byte/boolean array

Stocke un octet ou booléen dans un tableau

bipush 010h push one-byte signed integer

Empile un octet entier

breakpoint 0CAh reserved opcode

Point d'arrêt

caload 034h retrieve character from array

Retrouve un caractère dans un tableau

castore 055h store in character array

Stocke un caractère dans un tableau

checkcast 0C0h ensure type of an object or array  
d2f 090h convert double to float

Conversion d'un nombre de format Double en format Float

d2i 08Eh convert double to integer

Conversion d'un nombre de format Double en format entier

d2l 08Fh convert double to long integer

Conversion d'un nombre de format Double en format entier long

dadd 063h add two doubles

Addition deux nombres de format Double

daload 031h retrieve double-precision float from array

Recherche un nombre de format Float dans un tableau

dastore 052h store in double-precision float array

Stocke un nombre de format Float dans un tableau

dcmpg 098h compare two doubles (1 on NaN)

Compare deux nombre de format Double

dcmpl 097h compare two doubles (-1 on NaN)

Compare deux nombre de format Double

dconst_0 00Eh push the double 0.0

Empile un nombre 0.0 de format Double

dconst_1 00Fh push the double 1.0

Empile un nombre 1.0 de format Double

ddiv 06Fh divides two doubles

Division de deux nombres de format Double

dload 018h retrieve double from local variable

Empile un nombre de format Double dans une variable local

dload_0 026h retrieve double from local variables 0 and 1

Empile un nombre de format Double dans une variable local 0 et 1

dload_1 027h retrieve double from local variables 1 and 2

Empile un nombre de format Double dans une variable local 1 et 2

dload_2 028h retrieve double from local variables 2 and 3

Empile un nombre de format Double dans une variable local 2 et 3

dload_3 029h retrieve double from local variables 3 and 4

Empile un nombre de format Double dans une variable local 3 et 4

dmul 06Bh multiply two doubles

Multiplie deux nombres de format Double

dneg 077h negate a double

Négation d'un nombre de format Double

drem 073h remainder of two doubles  
dreturn 0AFh return from method with double result

Retour d'une méthode avec un nombre de format Double

dstore 039h store double in local variable  
dstore_0 049h store double in local variable 0 et 1  
dstore_1 04Ah store double in local variable 1 et 2  
dstore_2 047h store double in local variable 2 et 3  
dstore_3 048h store double in local variable 3 et 4  
dsub 067h subtract two doubles

Soustrait deux nombres de format Double

dup 059h duplicate top single-word item on the stack  
dup2 05Ch duplicate top two stack words  
dup2_x1 05Dh duplicate two words and insert beneath third word  
dup2_x2 05Eh duplicate two words and insert beneath fourth word  
dup_x1 05Ah duplicate top stack word and insert beneath second word  
dup_x2 05Bh duplicate top stack word and insert beneath third word  
f2d 08Dh convert float to double

Conversion d'un nombre de format Float en format Double

f2i 08Bh convert float to integer

Conversion d'un nombre de format Float en format entier

f2l 08Ch convert float to long integer

Conversion d'un nombre de format Float en format entier long

fadd 062h add two floats

Additionne deux nombres de format Float

faload 030h retrieve float from array  
fastore 051h store in single-precision float array  
fcmpg 096h single-precision float comparison (1 on NaN)  
fcmpl 095h single-precision float comparison (-1 on NaN)  
fconst_0 00Bh push the single float 0.0

Empile la valeur 0,0 de format Single Float

fconst_1 00Ch push the single float 1.0

Empile la valeur 1.0 de format Single Float

fconst_2 00Dh push the single float 2.0

Empile la valeur 2.0 de format Single Float

fdiv 06Eh divide two floats

Divise deux nombres de format Float

fload 017h retrieve float from local variable  
fload_0 022h retrieve float from local variable 0  
fload_1 023h retrieve float from local variable 1  
fload_2 024h retrieve float from local variable 2  
fload_3 025h retrieve float from local variable 3  
fmul 06Ah multiply two floats

Multiplie deux nombres de format Double

fneg 076h negate a float

Negation d'un nombre de format Float

frem 072h remainder of two floats  
freturn 0AEh return from method with float result  
fstore 038h store float in local variable  
fstore_0 043h store float in local variable 0  
fstore_1 044h store float in local variable 1  
fstore_2 045h store float in local variable 2  
fstore_3 046h store float in local variable 3  
fsub 066h subtract two floats

Soustrait deux nombres de format Float

getfield 0B4h get value of object field  
getstatic 0B2h get value of static field  
goto 0A7h branch to address

Branchement à une adresse

goto_w 0C8h branch to address using wide offset

Branchement relatif à une adresse

i2b 091h convert integer to byte

Conversion d'un entier en octet

i2c 092h convert integer to character

Conversion d'un entier en caractère

i2d 087h convert integer to double

Conversion d'un entier en format Double

i2 086h convert integer to float

Conversion d'un entier en format Float

i2l 085h convert integer to long integer

Conversion d'un entier en entier long

i2s 093h convert integer to short integer

Conversion d'un entier en entier court

iadd 060h add two integers

Additionne deux entiers

iaload 02Eh retrieve integer from array  
iand 07Eh integer bitwise and  
iastore 04Fh store in integer array  
iconst_0 003h push the integer constant 0

Empile 0 en tant qu'entier

iconst_1 004h push the integer constant 1

Empile 1 en tant qu'entier

iconst_2 005h push the integer constant 2

Empile 2 en tant qu'entier

iconst_3 006h push the integer constant 3

Empile 3 en tant qu'entier

iconst_4 007h push the integer constant 4

Empile 4 en tant qu'entier

iconst_5 008h push the integer constant 5

Empile 5 en tant qu'entier

iconst_m1 002h push the integer constant -1

Empile -1 en tant qu'entier

idiv 06Ch divide an integer by another integer

Division de deux entiers

if_acmpeq 0A5h jump if two object references are equal

Saute si égale

if_acmpne 0A6h jump if two object references are not equal

Saute si différent

if_icmpeq 09Fh jump if two integers are equal

Saute si deux entiers sont égale

if_icmpge 0A2h jump if one integer is greater than or equal to another

Saute si l'entier est supérieur ou égale

if_icmpgt 0A3h jump if one integer is greater than another

Saute si l'entier est supérieur

if_icmple 0A4h jump if one integer is less than or equal to another

Saute si l'entier est inférieur ou égale

if_icmplt 0A1h jump if one integer is less than another

Saute si l'entier est inférieur

if_icmpne 0A0h jump if two integers are not equal

Saute si deux entiers sont différents

ifeq 099h jump if zero

Saute si zéro

ifge 09Ch jump if greater than or equal to zero

Saute si supérieur ou égale à zéro

ifgt 09Dh jump if greater than zero

Saute si supérieur à zéro

ifle 09Eh jump if less than or equal to zero

Saute si inférieur ou égale à zéro

iflt 09Bh jump if less than zero

Saute si inférieur à zéro

ifne 09Ah jump if nonzero

Saute si différent de zéro

ifnonnull 0C7h jump if non-null

Saute si non nul

ifnull 0C6h jump if null

Saute si nul

iinc 084h increment integer in local variable

Incrément l'entier de la variable local

iload 015h retrieve integer from local variable

Recherche un entier dans la variable local

iload_0 1Ah push integer from local variable 0

Empile un entier de la variable local 0

iload_1 1Bh push integer from local variable 1

Empile un entier de la variable local 1

iload_2 1Ch push integer from local variable 2

Empile un entier de la variable local 2

iload_3 1Dh push integer from local variable 3

Empile un entier de la variable local 3

imped1 0FEh reserved opcode

Code réservé

imped2 0FFh reserved opcode

Code réservé

imul 068h multiply two integers

Multiplication de deux entiers

ineg 074h negate an integer

Négation de deux entiers

instanceof 0C1h test class of object

Teste les classes de l'objet

invokeinterface 0B9h invoke an interface method

Invoque la méthode de l'interface

invokespecial 0B7h invoke method belonging to a specific class  
invokestatic 0B8h invoke a class (static) method  
invokevirtual 0B6h call an instance method  
ior 080h integer bitwise or

Ou binaire d'un entier

irem 070h remainder of two integers  
ireturn 0ACh return from method with integer result  
ishl 078h integer shift left

Décalage vers la gauche de bits d'un entier

ishr 07Ah integer arithmetic shift right

Décalage vers la droite de bits d'un entier

istore 036h store integer in local variable

Stock un entier dans la variable local

istore_0 03Ch store integer in local variable 0

Stock un entier dans la variable local 0

istore_1 03Dh store integer in local variable 1

Stock un entier dans la variable local 1

istore_2 03Eh store integer in local variable 2

Stock un entier dans la variable local 2

istore_3 03Fh store integer in local variable 3

Stock un entier dans la variable local 3

isub 064h subtract two integers

Soustrait deux entiers

iushr 07Ch integer logical shift right  
ixor 082h integer bitwise exclusive or

Ou exclusif binaire d'un entier

jsr 0A8h jump to subroutine

Saute à la sous-routine

jsr_w 0C9h jump to subroutine using wide offset

Saute à la sous-routine avec un adresse relatif

l2d 08Ah convert long to double

Conversion d'un entier long au format Double

l2f 089h convert long to float

Conversion d'un entier long au format Float

l2i 088h long to integer conversion

Conversion d'un entier long à un entier

ladd 061h add two long integers

Additionne deux entiers long

laload 02Fh retrieve long integer from array  
land 07Fh long integer bitwise and

Et binaire d'un entier long

lastore 050h store in long integer array  
lcmp 094h long integer comparison

Comparaison de deux entiers long

lconst_0 009h push the long integer 0

Empile 0 de format entier long

lconst_1 00Ah push the long integer 1

Empile 1 de format entier long

ldc 012h push single-word constant onto stack  
ldc_w 013h push single-word constant onto stack (wide index)  
ldc2_w 014h push two-word constant onto stack  
ldiv 06Dh divide a long integer

Division d'un entier long

lload 016h retrieve long from local variable  
lload_0 01Eh retrieve long integer from local variables 0 and 1  
lload_1 01Fh retrieve long integer from local variables 1 and 2  
lload_2 020h retrieve long integer from local variables 2 and 3  
lload_3 021h retrieve long integer from local variables 3 and 4  
lmul 069h multiply two longs  
lneg 075h negate a long  
lookupswitch 0ABh match key in table and jump  
lor 081h long integer bitwise or  
lrem 071h modulus of two longs  
lreturn 0ADh return from method with long result  
lshl 079h long integer shift left  
lshr 07Bh long integer arithmetic shift right  
lstore 037h store long integer in local variable  
lstore_0 03Fh store long in local variables 0 and 1  
lstore_1 040h store long in local variables 1 and 2  
lstore_2 041h store long in local variables 2 and 3  
lstore_3 042h store long in local variables 3 and 4  
lsub 065h subtract two longs

Soustrait deux entiers long

lushr 07Dh long integer logical shift right  
lxor 083h long integer bitwise exclusive or  
monitorenter 0C2h enter synchronized region of code  
monitorexit 0C3h leave synchronized region of code  
multianewarray 0C5h allocate multi-dimensional array  
new 0BBh create an object

Création d'un objet

newarray 0BCh allocate new array for numbers or booleans  
nop 000h do nothing

Ne fait rien

pop 057h discard top word on stack

Dépile un mot de la pile

pop2 058h discard top two words on stack

Dépile un double mot de la pile

putfield 0B5h set value of object field  
putstatic 0B3h set value of static field  
ret 0A9h return from subroutine

Retour de la sous-routine

return 0B1h return from method

Retour de la méthode

saload 035h retrieve short from array  
sastore 056h store in short array  
sipush 011h push two-byte signed integer  
swap 05Fh swap top two stack words

Échange les deux mots supérieur de la pile

tableswitch 0AAh jump according to a table  
wide 0C4h next instruction uses 16-bit index

Instruction combiner

Dernière mise à jour: Samedi, le 28 janvier 2006