Jvm(43),指令集----加载与存储指令

Posted qingruihappy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jvm(43),指令集----加载与存储指令相关的知识,希望对你有一定的参考价值。

加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈之间来回传输,这类指令包括如下内容。

将一个局部变量加载到操作栈:iload、iload_<n>、lload、lload_<n>、fload、fload_ <n>、dload、dload_<n>、aload、aload_<n>。

将一个数值从操作数栈存储到局部变量表:istore、istore_<n>、lstore、lstore_<n>、 fstore、fstore_<n>、dstore、dstore_<n>、astore、astore_<n>。

将一个常量加载到操作数栈:bipush、sipush、ldc、ldc_w、ldc2_w、aconst_null、 iconst_m1、iconst_<i>、lconst_<l>、fconst_<f>、dconst_<d>。扩充局部变量表的访问索引的指令:wide。

存储数据的操作数栈和局部变量表主要就是由加载和存储指令进行操作,除此之外,还有少量指令,如访问对象的字段或数组元素的指令也会向操作数栈传输数据。

public class Demo5 {

    public int add(int a, int b) {

         return a + b;

    }

}

技术分享图片

从上面我们可以看到将一个局部变量加载到操作栈 iload_1 iload_2 入栈,然后iadd 最后就是 ireturn

下面我们在来看看入局部变量表的信息。

public class Demo5 {     public int add(int a, int b) {

         int c = a + b;

         return 1 + 1;

    }

}

技术分享图片

以上是关于Jvm(43),指令集----加载与存储指令的主要内容,如果未能解决你的问题,请参考以下文章

jvm中篇-05-字节码指令集与解析

Jvm(42),指令集----字节码与数据类型

一点JVM字节码指令介绍

jvm原理(35)基于栈的指令集与基于寄存器的指令集详细比对&执行栈指令集实例剖析

jvm原理(35)基于栈的指令集与基于寄存器的指令集详细比对&执行栈指令集实例剖析

Jvm(46),指令集----对象创建与访问指令