jvm指令

本文详细介绍了Java虚拟机(JVM)中操作数栈和局部变量表的相关指令,包括加载、存储、常量加载、算术运算、比较及类型转换等。这些指令在字节码执行过程中起着关键作用,对于理解JVM内部工作原理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符含义

i代表int类型的数据
l代表long类型的数据
s代表short类型的数据
b代表byte类型的数据
c代表char类型的数据
f代表float类型的数据
d代表double类型的数据
a代表reference类型的数据

load

将一个本地变量加载到操作数栈

iload、lload、fload、dload、aload

store

将一个数值从操作数栈存储到局部变量表的指令

istore、lstore、fstore、dstore、astore

iconst等

将一个常量加载到操作数栈的指令

bipush、sipush、idc、idc_w、ldc2_w、aconst_null、iconst_ml
iconst_<i>、iconst_<l>、iconst_<f>、iconst_<d>

iconst

当int取值-1~5时,JVM采用iconst指令将常量压入栈中
int 取值 0~5 时,JVM采用 iconst_0、iconst_1、iconst_2、iconst_3、iconst_4、iconst_5指令将常量压入栈中;
取值-1时,采用iconst_m1指令将常量压入栈中

算术指令

加法

iadd、 ladd、 fadd、 dadd

减法

isub、lsub、fsub、dsub

乘法

imul、lmul、fmul、dmul

除法

idiv、ldiv、fdiv、ddiv

求余

irem、lrem、frem、drem、

求负值

ineg、lneg、fneg、dneg

移位指令

ishl、ishr、iushr、ishl、lshr、lushr

按位或指令

ior、lor

按位与指令

iand、land

按位异或指令

ixor、lxor

局部变量自增

iinc

比较指令

dcmpg、dcmpl、fcmpg、fcmpl、lcmp

ldc

# 从运行时常量池提取数据并压入操作数栈
ldc

dup

# 复制操作数栈栈顶的值,并插入到栈顶
# Duplicate the top operand stack value
dup

invoke

invokespecial

 # 调用实例初始化方法比如<init>方法
 invokespecial
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值