zoukankan      html  css  js  c++  java
  • JVM虚拟机-----运行时数据区-----JVM虚拟机栈-----操作数栈

    操作数栈

    (可以采用数组或者链表来实现)

    先15、8进栈,执行+;

    23进栈

    15出栈

    8出栈

    知识点

    后进后出的操作数栈,可以成为表达式栈

    操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或者提取数据,即入栈/出栈

    如果被调动的方法带有返回值,其返回值会被压入当前栈帧的操作数栈中,并更新PC寄存器中下一条需要执行的字节码指令

    操作数栈中元素的数据类型必须与字节码指令的序列严格匹配

    另外,我们说Java虚拟机的解释引擎室基于栈的执行引擎,其中的栈指的就是操作数栈。

    操作数栈:主要用于保存计算过程的中间结果,同时作为计算过程中变量的临时的存储空间

    操作数栈就是JVM执行引擎的以各工作区,当一个方法刚开始执行的时候,一个新的栈帧也会随之被创建出来,这个方法的操作数栈使空的。

    每个操作数栈在编译器就定义好了栈的深度

    64位的类型占用两个单位的栈深度。

    执行流程

     解析:

    0. bipush 15 ------》进操作数栈

    2.istore_1 ------>出操作数栈-------》进局部变量表

    3 bipush 8 -----》进操作数栈

    5 istore_2 -----> 出操作数栈 -------》进局部变量表

    6 iload_1 ------》从局部变量表-------》进操作数栈

    7 iload_2-------> 从局部变量表-------》进操作数栈

    8 iadd-------》将操作数栈内容进行相加------》出栈

    9 istore_3 ------->将和存储局部变量表

    10 退出

  • 相关阅读:
    面试准备(集合部分)
    面试准备(算法部分)
    面试准备(sql部分 索引、常用语句 、)
    破解idea软件教程
    40个Java多线程问题详解复习
    面向对象(2)
    开发中容易造成内存泄露的操作
    面向对象(1)
    vue-cli中找不到jquery的原因,以使用ztree为例
    Django中整合Vue-cli,并解决各种路径引用错误和跨域的问题
  • 原文地址:https://www.cnblogs.com/sicheng-li/p/12965124.html
Copyright © 2011-2022 走看看