当前位置:网站首页>JVM instruction mnemonic
JVM instruction mnemonic
2022-07-02 09:16:00 【_ Time boiled the rain】
Load and store instructions
It is used to transfer data back and forth between the local variable table and the stack of operands in the stack frame
Instruction to load constants into the operation stack
aconst_null take null Object references are pushed onto the stack
iconst_m1 take int Type constant -1 Push to stack
iconst_0 take int Type constant 0 Push to stack
iconst_1 take int Type constant 1 Push in the operand stack
iconst_2 take int Type constant 2 Push to stack
iconst_3 take int Type constant 3 Push to stack
iconst_4 take int Type constant 4 Push to stack
iconst_5 take int Type constant 5 Push to stack
lconst_0 take long Type constant 0 Push to stack
lconst_1 take long Type constant 1 Push to stack
fconst_0 take float Type constant 0 Push to stack
fconst_1 take float Type constant 1 Push to stack
dconst_0 take double Type constant 0 Push to stack
dconst_1 take double Type constant 1 Push to stack
bipush Will a 8 Bit signed integers are pushed onto the stack
sipush take 16 Bit signed integers are pushed onto the stack
ldc Push items in the constant pool onto the stack
ldc_w Push items in the constant pool onto the stack ( Use a wide index )
ldc2_w Put the constant pool long Type or double Type is pushed onto the stack ( Use a wide index )
Instructions that load values from the local variable table into the operation stack
iload Load... From local variables int Type values
lload Load... From local variables long Type values
fload Load... From local variables float Type values
dload Load... From local variables double Type values
aload Load reference type values from local variables (refernce)
iload_0 From local variable 0 Medium load int Type values
iload_1 From local variable 1 Medium load int Type values
iload_2 From local variable 2 Medium load int Type values
iload_3 From local variable 3 Medium load int Type values
lload_0 From local variable 0 Medium load long Type values
lload_1 From local variable 1 Medium load long Type values
lload_2 From local variable 2 Medium load long Type values
lload_3 From local variable 3 Medium load long Type values
fload_0 From local variable 0 Medium load float Type values
fload_1 From local variable 1 Medium load float Type values
fload_2 From local variable 2 Medium load float Type values
fload_3 From local variable 3 Medium load float Type values
dload_0 From local variable 0 Medium load double Type values
dload_1 From local variable 1 Medium load double Type values
dload_2 From local variable 2 Medium load double Type values
dload_3 From local variable 3 Medium load double Type values
aload_0 From local variable 0 Load reference type values in
aload_1 From local variable 1 Load reference type values in
aload_2 From local variable 2 Load reference type values in
aload_3 From local variable 3 Load reference type values in
iaload Load... From an array int Type values
laload Load... From an array long Type values
faload Load... From an array float Type values
daload Load... From an array double Type values
aaload Load reference type values from an array
baload Load... From an array byte Type or boolean Type values
caload Load... From an array char Type values
saload Load... From an array short Type values
The instruction to store the value in the operation stack into the local variable table
istore take int Type values are stored in local variables
lstore take long Type values are stored in local variables
fstore take float Type values are stored in local variables
dstore take double Type values are stored in local variables
astore The type or returnAddress Type values are stored in local variables
istore_0 take int Type values are stored in local variables 0
istore_1 take int Type values are stored in local variables 1
istore_2 take int Type values are stored in local variables 2
istore_3 take int Type values are stored in local variables 3
lstore_0 take long Type values are stored in local variables 0
lstore_1 take long Type values are stored in local variables 1
lstore_2 take long Type values are stored in local variables 2
lstore_3 take long Type values are stored in local variables 3
fstore_0 take float Type values are stored in local variables 0
fstore_1 take float Type values are stored in local variables 1
fstore_2 take float Type values are stored in local variables 2
fstore_3 take float Type values are stored in local variables 3
dstore_0 take double Type values are stored in local variables 0
dstore_1 take double Type values are stored in local variables 1
dstore_2 take double Type values are stored in local variables 2
dstore_3 take double Type values are stored in local variables 3
astore_0 The reference type or returnAddress Type values are stored in local variables 0
astore_1 The reference type or returnAddress Type values are stored in local variables 1
astore_2 The reference type or returnAddress Type values are stored in local variables 2
astore_3 The reference type or returnAddress Type values are stored in local variables 3
iastore take int Type values are stored in arrays
lastore take long Type values are stored in arrays
fastore take float Type values are stored in arrays
dastore take double Type values are stored in arrays
aastore Put the reference type value into an array
bastore take byte Type or boolean Type values are stored in arrays
castore take char Type values are stored in arrays
sastore take short Type values are stored in arrays
wide Instructions
wide Use additional bytes to expand the access index of the local variable table
Operation instruction
Used to perform a specific operation on the values of two operand stacks , And re store the results to the top of the operation stack .
Integer operation
iadd perform int Type of addition
ladd perform long Type of addition
isub perform int Subtraction of types
lsub perform long Subtraction of types
imul perform int Type multiplication
lmul perform long Type multiplication
idiv perform int Division of types
ldiv perform long Division of types
irem Calculation int The remainder of type division
lrem Calculation long The remainder of type division
ineg To a int Type values are negated
lneg To a long Type values are negated
iinc Add a constant value to a int On local variables of type
Displacement command
ishl perform int Shift left operation of type
lshl perform long Shift left operation of type
ishr perform int Shift right operation of type
lshr perform long Shift right operation of type
iushr perform int Logical shift right operation of type
lushr perform long Logical shift right operation of type
Bitwise Boolean operations
iand Yes int Type values are “ Logic and ” operation
land Yes long Type values are “ Logic and ” operation
ior Yes int Type values are “ Logic or ” operation
lor Yes long Type values are “ Logic or ” operation
ixor Yes int Type values are “ Logical XOR ” operation
lxor Yes long Type values are “ Logical XOR ” operation
Floating point operation
fadd perform float Type of addition
dadd perform double Type of addition
fsub perform float Subtraction of types
dsub perform double Subtraction of types
fmul perform float Type multiplication
dmul perform double Type multiplication
fdiv perform float Division of types
ddiv perform double Division of types
frem Calculation float The remainder of type division
drem Calculation double The remainder of type division
fneg Will a float The value of type is negated
dneg Will a double The value of type is negated
Type conversion instructions
Correlates two different numeric types
i2l hold int Type of data is converted to long type
i2f hold int Type of data is converted to float type
i2d hold int Type of data is converted to double type
l2i hold long Type of data is converted to int type
l2f hold long Type of data is converted to float type
l2d hold long Type of data is converted to double type
f2i hold float Type of data is converted to int type
f2l hold float Type of data is converted to long type
f2d hold float Type of data is converted to double type
d2i hold double Type of data is converted to int type
d2l hold double Type of data is converted to long type
d2f hold double Type of data is converted to float type
i2b hold int Type of data is converted to byte type
i2c hold int Type of data is converted to char type
i2s hold int Type of data is converted to short type
Object and array instructions
Object operation instructions
new Create a new object
checkcast Determine that the object is of the given type
getfield Get fields from objects
putfield Set the value of the field in the object
getstatic Get static field from class
putstatic Set the value of the static field in the class
instanceof Determine whether the object is of the given type
Array operation instructions
newarray Assign the data member type to a new array of basic data types
anewarray Assign a new array of data member types to reference types
arraylength Get array length
multianewarray Assign a new multidimensional array
Operand stack management instructions
Instructions that operate the operand stack directly , Include :
nop Do nothing
pop Pop up a word at the top of the stack
pop2 Pop up two words at the top of the stack
dup Copy one word at the top of the stack
dup_x1 Copy one word at the top of the stack , Then push the copied content and the original pop-up content of two words into the stack
dup_x2 Copy one word at the top of the stack , Then push the copied content and the original pop-up content of three words into the stack
dup2 Copy two words at the top of the stack
dup2_x1 Copy two words at the top of the stack , Then push the copied content and the original pop-up content of three words into the stack
dup2_x2 Copy two words at the top of the stack , Then push the copied content and the original pop-up content of four words into the stack
swap Switch two words at the top of the stack
Control transfer instructions
Give Way Java The virtual machine conditionally or unconditionally continues to execute the program from the next instruction of the specified location instruction , It can be considered that the control instruction is modified conditionally or unconditionally PC Register value
Conditional branch instruction
ifeq If it is equal to 0, Then jump
ifne If not equal to 0, Then jump
iflt If it is less than 0, Then jump
ifge If greater than or equal to 0, Then jump
ifgt If it is greater than 0, Then jump
ifle If less than or equal to 0, Then jump
if_icmpcq If two int The values are equal , Then jump
if_icmpne If two int Type values are not equal , Then jump
if_icmplt If one int The type value is less than the other int Type values , Then jump
if_icmpge If one int Type value is greater than or equal to another int Type values , Then jump
if_icmpgt If one int Type value is greater than another int Type values , Then jump
if_icmple If one int Type value is less than or equal to another int Type values , Then jump
ifnull If it is equal to null, Then jump
ifnonnull If not equal to null, Then jump
if_acmpeq If two object references are equal , Then jump
if_acmpnc If two object references are not equal , Then jump
Comparison instruction
lcmp Compare long Type values
fcmpl Compare float Type values ( When you meet NaN when , return -1)
fcmpg Compare float Type values ( When you meet NaN when , return 1)
dcmpl Compare double Type values ( When you meet NaN when , return -1)
dcmpg Compare double Type values ( When you meet NaN when , return 1)
Unconditional transfer instructions
goto Jump unconditionally
goto_w Jump unconditionally ( Wide index )
Watch jump instructions
tableswitch Access jump table through index , And jump
lookupswitch Access the jump table through key value matching , And perform the jump operation
abnormal
athrow Throw an exception or error
finally Clause
jsr Jump to subroutine
jsr_w Jump to subroutine ( Wide index )
rct Return from subroutine
Method calls and return instructions
Method call instructions
invokcvirtual The runtime calls instance methods according to the class of the object
invokespecial Call instance methods based on compile time type
invokestatic Calling class ( static state ) Method
invokcinterface Call interface method
Method return instruction
ireturn Return... From method int Data of type
lreturn Return... From method long Data of type
freturn Return... From method float Data of type
dreturn Return... From method double Data of type
areturn Return data of reference type from method
return Return... From method , The return value is void
Thread synchronization instructions
montiorenter Enter and get the object monitor
monitorexit Release and exit object monitor
JVM Instruction mnemonics
Variable to operand stack :iload,iload_,lload,lload_,fload,fload_,dload,dload_,aload,aload_
Stack operands to variables :istore,istore_,lstore,lstore_,fstore,fstore_,dstore,dstor_,astore,astore_
Constant to operand stack :bipush,sipush,ldc,ldc_w,ldc2_w,aconst_null,iconst_ml,iconst_,lconst_,fconst_,dconst_
Add :iadd,ladd,fadd,dadd
reduce :isub,lsub,fsub,dsub
ride :imul,lmul,fmul,dmul
except :idiv,ldiv,fdiv,ddiv
remainder :irem,lrem,frem,drem
Take the negative :ineg,lneg,fneg,dneg
displacement :ishl,lshr,iushr,lshl,lshr,lushr
Press bit or :ior,lor
Bitwise AND :iand,land
Bitwise XOR :ixor,lxor
Type conversion :i2l,i2f,i2d,l2f,l2d,f2d( Relax the numerical conversion )
i2b,i2c,i2s,l2i,f2i,f2l,d2i,d2l,d2f( Narrow value conversion )
Create class instances :new
Create a new array :newarray,anewarray,multianwarray
Access to the class's domain and class instance domain :getfield,putfield,getstatic,putstatic
Load data onto the operand stack :baload,caload,saload,iaload,laload,faload,daload,aaload
From the stack of operands to the array :bastore,castore,sastore,iastore,lastore,fastore,dastore,aastore
Get array length :arraylength
Check class instance or array properties :instanceof,checkcast
Operand stack management :pop,pop2,dup,dup2,dup_xl,dup2_xl,dup_x2,dup2_x2,swap
Conditional transfer :ifeq,iflt,ifle,ifne,ifgt,ifge,ifnull,ifnonnull,if_icmpeq,if_icmpene,if_icmplt,if_icmpgt,if_icmple,if_icmpge,if_acmpeq,if_acmpne,lcmp,fcmpl,fcmpg,dcmpl,dcmpg
Composite conditional transfer :tableswitch,lookupswitch
To transfer unconditionally :goto,goto_w,jsr,jsr_w,ret
The real method of scheduling objects :invokevirtual
Call methods implemented by interfaces :invokeinterface
Call instance methods that need special handling :invokespecial
Call static methods in named classes :invokestatic
Method returns :ireturn,lreturn,freturn,dreturn,areturn,return
abnormal :athrow
finally The implementation of keywords uses :jsr,jsr_w,ret
边栏推荐
- 「Redis源码系列」关于源码阅读的学习与思考
- [go practical basis] how to bind and use URL parameters in gin
- 【Go实战基础】gin 如何获取 GET 和 POST 的请求参数
- JVM指令助记符
- Solutions to Chinese garbled code in CMD window
- Actual combat of microservices | discovery and invocation of original ecosystem implementation services
- 【Go实战基础】gin 如何设置路由
- 京东面试官问:LEFT JOIN关联表中用ON还是WHERE跟条件有什么区别
- Solution to amq4036 error in remote connection to IBM MQ
- 微服务实战|声明式服务调用OpenFeign实践
猜你喜欢
Probability is not yet. Look at statistical learning methods -- Chapter 4, naive Bayesian method
Function ‘ngram‘ is not defined
Solution and analysis of Hanoi Tower problem
Microservice practice | fuse hytrix initial experience
【Go实战基础】gin 如何自定义和使用一个中间件
【Go实战基础】gin 如何绑定与使用 url 参数
During MySQL installation, mysqld Exe reports that the application cannot start normally (0xc000007b)`
C language - Blue Bridge Cup - 7 segment code
"Redis source code series" learning and thinking about source code reading
Don't spend money, spend an hour to build your own blog website
随机推荐
微服务实战|熔断器Hystrix初体验
Connect function and disconnect function of QT
Image transformation, transpose
Taking the upgrade of ByteDance internal data catalog architecture as an example, talk about the performance optimization of business system
Number structure (C language -- code with comments) -- Chapter 2, linear table (updated version)
Cloudrev self built cloud disk practice, I said that no one can limit my capacity and speed
西瓜书--第五章.神经网络
Flink - use the streaming batch API to count the number of words
Actual combat of microservices | discovery and invocation of original ecosystem implementation services
Gocv split color channel
[staff] common symbols of staff (Hualian clef | treble clef | bass clef | rest | bar line)
Troubleshooting and handling of an online problem caused by redis zadd
Typeerror: X () got multiple values for argument 'y‘
How to realize asynchronous programming in a synchronous way?
Servlet全解:继承关系、生命周期、容器和请求转发与重定向等
Oracle修改表空间名称以及数据文件
Jingdong senior engineer has developed for ten years and compiled "core technology of 100 million traffic website architecture"
【Go实战基础】如何安装和使用 gin
Oracle related statistics
[go practical basis] how to install and use gin