常见JVM虚拟机指令

常见JVM虚拟机指令

1.基本常用

指令解释
new创建一个对象并将地址放入虚拟机栈
dup复制一个对象地址放入虚拟机栈
invokespecial用于调用私有方法及final方法,调用构造方法
invokestatic用于调用静态方法
invokeinterface用于调用接口方法
checkcast确定对象为所给定的类型并强制类型转换
putstatic设置类中静态字段的值
getstatic从类中获取静态字段
putfield设置对象中字段的值
getfield从对象中获取字段
instanceof判断对象是否为给定的类型
pop将上面执行的最近的栈帧弹出栈
istore_0将上面执行最近的引用地址放入局部变量表地零个槽位(相应的 i 可以替换为s,l,f,d,a,ia,ba,sa,la,fa,da,ca,aa,分别指代int,short,long,float,double,引用类型,int数组,boolean数组,short数组,long数组,float数组,double数组,char数组,引用类型数组)
iload_1将局部变量表中第一个槽位的值或地址放入虚拟机栈(相应的 i 可以替换为s,l,f,d,a,ia,ba,sa,la,fa,da,ca,aa,分别指代int,short,long,float,double,引用类型,int数组,boolean数组,short数组,long数组,float数组,double数组,char数组,引用类型数组)
iconst_1当int取值1-5时,取一个常量放到虚拟机栈(相应的前面的i:int类型,可替换为除了byte的其他几种基本数据类型)。
bipushint取值-128到127时,认为是一个byte类型的值放入虚拟机栈。
sipushint取值-32768到32767时,认为是short类型的值放入虚拟机栈
ldc当int取值-2147483648到2147483647时,认为是一个long类型的值放入虚拟机栈中。
goto跳转到某行指令
return返回方法命令。

2.运算

(相应的 i 可以替换为 s , l, f, d,分别代指int,short,long,float,double)

指令解释
iaddint类型的加法
isubint类型的减法
imulint类型的乘法
idivint类型的除法
iremint类型的除法的余数
inegint类型的取反操作
iincint类型的本身加上一个常量

3.流程控制

(相应的 i 可以替换为 s , l, f, d,分别代指int,short,long,float,double)

指令解释
ifeq是否等于0
ifne是否不等于0
iflt是否小于0
ifge是否大于等于0
ifgt是否大于0
ifle是否小于等于0
iflt是否小于0
if_icmpeq判断两个值是否相等
if_icmpne判断两个值是否不相等
if_icmplt判断先入栈的是否小于后入栈的
if_icmple判断先入栈的是否小于等于后入栈的
if_icmpgt判断先入栈的是否大于后入栈的
if_icmpge判断先入栈的是否大于等于后入栈的
if_icmpgt判断先入栈的是否大于后入栈的
ifnull判断是否为空
ifnonull判断是否不为空

4.比较

指令解释
lcmp比较两个值 long类型
fcmpl比较两个float类型值(当遇到NaN时,返回-1)
fcmpg比较两个float类型值(当遇到NaN时,返回-1)
dcmpg比较两个double类型值(当遇到NaN时,返回-1)
dcmpg比较两个double类型值(当遇到NaN时,返回-1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值