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;

    }

}

猜你喜欢

转载自www.cnblogs.com/qingruihappy/p/9691443.html