Deep Java Virtual machine Note: Instruction set (GO)

Source: Internet
Author: User

Instructions Meaning
Iconst_m1 Press the INT constant-1 into the stack
Iconst_0 The int constant is pressed into the stack
Fconst_1 The float type constant 1 is pressed into the stack
Lconst_2 Press the long constant 2 into the stack
Dconst_3 Press the double type constant 3 into the stack
Bipush byte1 Convert byte1 into int type press-in stack
Sipush Byte1,byte2 Converts a short of byte1,byte2 into an int pressed into the stack
Aconst_null To push an empty object into the stack
LDC Indexbyte1 Presses a word word for the subscript specified in the constant pool into the stack
Ldc_w Indexbyte1,indexbyte2 Presses a word word for the subscript specified in the constant pool into the stack
Ldc2_w Indexbyte1,intexbyte2 Press the two word lengths of the specified subscript in the constant pool into the stack
Pop Pop up a word on the top of the stack
Pop2 Pop-up stack top two characters
Swap Swap stack top two words
Dup Copy a WORD from the top of the stack
Dup2 Copy the top two characters of the stack
Dup_x1 Copy a word and the two words will pop up the stack
Dup_x2 Copy a word and will pop up the three-word press stack
Dup2_x1 Copy the two words and will pop up the three-word press stack
Dup2_x2 Copy two words and will pop up the four word press stack
Iload Vindex Press the int local variable of position vindex into the stack
Iload_0 Press the int local variable of position 0 into the stack
Fload Vindex The float type local variable of position Vindex is pressed into the stack
Fload_0 The float type local variable of position 0 is pressed into the stack
Lload Vindex Press the long local variable of position vindex into the stack
Lload_0 Press the long local variable of position 0 into the stack
Dload Vindex Press the double local variable of position vindex into the stack
Dload_0 Press the double local variable of position 0 into the stack
Aload Vindex Vindex the position of an object referencing a local variable into the stack
Aload_0 The object referencing the position 0 is pressed into the stack with a local variable
Istore Vindex Pop-up int, local variable stored at Vindex
Istore_0 Pop-up int, local variable stored at 0
Fstore Vindex Popup float type, local variable stored at Vindex
Fstore_0 Float type, local variable stored at 0
Lstore Vindex Pop-up long, local variables stored at Vindex
Lstore_0 Pop-up long, local variables stored at 0
Dstore Vindex Pop-up double, local variable stored at Vindex
Dstore_0 Pop-up double, local variable stored at 0
Astore Vindex Popup object reference type, local variable stored at Vindex
Astore_0 Popup object reference type, local variable stored at 0
Wide Iload Byte1,byte2 Wide can turn the original byte parameter into a processing two bytes
i2l convert int to long type, others similar, no longer examples
Iadd Pop-up two int, add the result into the stack
Ladd Pop-up two long, add the result into the stack
Iinc Vindex,const Add constant const to local variables located in Vindex
Wide Iinc Index1,intdex2,const1,const2 Add a constant to a local variable located in Vindex1,vindex2
Isub Pop-up two int, subtract after lint type result press into stack
Lsub Pop-up two long, subtract long result into stack
Imul Pop-up two int, multiply int type result press into stack
Lmul Pop-up two long, multiply the long result into a stack
Idev Pop-up two int, divide after int type result press into stack
Ldev Pop-up two long, divided by a long type result pressed into the stack
Irem Pop-up two int type, after remainder int type result press into stack
Lrem Pop-up two long, after the remainder of long type results pressed into the stack
Ineg Pop up an int type, take the inverse int type result pressed into the stack
Lneg pops up a long type and takes the inverted long result into the stack
Ishl Shift the int value to the left (long-similar)
Ishr Arithmetic shift of int value to right
Iushr Logical shift of int values to the right
Iand Logic and operations (long similar) for two int type values
Ior Logical OR operation on two int type values
Ixor Logical XOR operation on two int type values
Fadd Pop-up two float type, add after float type result pressed into stack
Fsub Pop-up two float type, subtract float type result pressed into stack
Fmul Pop-up two float type, multiply after float type result pressed into stack
Fdiv Pop-up two float type, divide after float type result press into stack
Frem Pop-up two float type, after the float type result pressed into the stack
New Indexbyte1,indexbyte2 Create a new object in the heap and press it into the stack
Putfield Indexbyte1,intdebyte2 Sets the value of the Object field, and the value and object reference are obtained from the stack
GetField Indexbyte1,indexbyte2 Press the object field into the stack, and the object reference is fetched from the stack
Putstatic Indexbyte1,indexbyte2 Sets the value of a class static variable, obtained from the stack
Getstatic Indexbyte1,indexbyte2 Pressing static variables into the stack
Checkcast Indexbyte1,indexbyte2 Throws an exception if the reference in the stack is not a class at the specified location
instanceof Indexbyte1,indexbyte2 Ditto, but press true or false toward the result
NewArray Atype POPs the length from the stack, assigning an array of type Atype
Anewarray Indexbyte1,intdexbyte2 Take length from stack, index take type
Multianewarray index1,index2,dimensions assigning multidimensional arrays
Arraylength POPs a reference from the stack and presses its length into the stack
Baload The array reference and subscript are taken from the stack, and the corresponding Boolean is pressed into the stack.
Caload Ibid., Char
Saload Ibid., Short
Iaload Ibid., int
Laload Ibid., Long
Faload Ibid., Folat
Daload Ibid., double
Aaload Ibid., array
Bastore

Assigns a byte or Boolean value, index, and array reference to the Arrayref pop-up stack, assigning a value of Arrayref[index]=value

Other types Ibid.

Ifeq Branchbyte1,branchbyte2 POPs the int type from the stack, jumps to the specified branch for 0 to execute
Ifne Branchbyte1,branchbyte2 Ditto, not 0 jumps to the specified branch execution
Iflt Branchbyte1,branchbyte2 Ibid., if less than 0, jumps to the specified branch to execute
Ifle Branchbyte1,branchbyte2 Ibid., if less than or equal to 0, jumps to the specified branch to execute
IFGT Branchbyte1,branchbyte2 IBID., if greater than 0, jumps to the specified branch to execute
IFGE Branchbyte1,branchbyte2 IBID., if greater than or equal to 0, jumps to the specified branch to execute
If_icmpeq Branchbyte1,branchbyte2 stack pops two int, if one equals the second, jumps
IF_ICMPME Branchbyte1,branchbyte2 stack pops two int, if one is not equal to the second, jump
IF_ICMPLT Branchbyte1,branchbyte2 stack pops two int, if one is less than the second one, jumps
If_icmple Branchbyte1,branchbyte2 stack pops two int, if one is less than or equal to the second one, jumps
IF_ICMPGT Branchbyte1,branchbyte2 stack pops two int, if one is greater than the second one, jumps
If_icmpge Branchbyte1,branchbyte2 stack pops two int, if one is greater than or equal to the second, jump
lcmp Pop two long from the stack, put the result-1, 0, 1 into the stack
Fcmpg Pop two float from the stack, put the results-1, 0, 1 into the stack
Fcmpl Pop two float from the stack, put the results-1, 0, 1 into the stack
Dcmpg POPs two double from the stack, putting the result-1, 0, 1 into the stack
Dcmpl POPs two double from the stack, putting the result-1, 0, 1 into the stack
Ifnull Branchbyte1,branchbyte2 POPs out of the stack and jumps to the branch if it's null
Ifnonnull Branchbyte1,branchbyte2 POPs out of the stack and jumps to the branch if it's not null

Deep Java Virtual machine Note: Instruction set (GO)

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.