操作数栈
来源:互联网 发布:mac bootcamp磁盘权限 编辑:程序博客网 时间:2024/06/05 03:49
每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。
对于执行引擎来说,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧所关联的方法称为当前方法。执行引擎所运行的所有字节码指令都只针对当前栈帧进行操作。
操作数栈
Java虚拟机的解释执行引擎被称为"基于栈的执行引擎",其中所指的栈就是指-操作数栈。
操作数栈也常被称为操作栈。
和局部变量区一样,操作数栈也是被组织成一个以字长为单位的数组。但是和前者不同的是,它不是通过索引来访问,而是通过标准的栈操作—压栈和出栈—来访问的。比如,如果某个指令把一个值压入到操作数栈中,稍后另一个指令就可以弹出这个值来使用。
虚拟机在操作数栈中存储数据的方式和在局部变量区中是一样的:如int、long、float、double、reference和returnType的存储。对于byte、short以及char类型的值在压入到操作数栈之前,也会被转换为int。
虚拟机把操作数栈作为它的工作区——大多数指令都要从这里弹出数据,执行运算,然后把结果压回操作数栈。(也就是说,操作数栈是进行数据运算的地方。)比如,iadd指令就要从操作数栈中弹出两个整数,执行加法运算,其结果又压回到操作数栈中,看看下面的示例,它演示了虚拟机是如何把两个int类型的局部变量相加,再把结果保存到第三个局部变量的:
- begin
- iload_0 // 将本地变量0中的int推入堆栈
- iload_1 // 将本地变量1中的int推入堆栈
- iadd // pop two ints, add them, push result
- istore_2 // 弹出int,存储到本地变量2中
- end
阅读全文
0 0
- 操作数栈
- 操作数
- 操作数
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 栈帧、局部变量表、操作数栈
- 浮点数操作
- js浮点数操作
- 最少操作数
- 二叉数操作
- 操作数寻址
- 最小操作数
- 最小操作数
- 最小操作数
- 牛客模拟赛3-E绝对半径2051
- Python 线程,前台线程,后台线程生命周期
- 无限轮播
- 14-正则表达式/Pattern和Matcher/Math类/Random类/System类/SimpleDateFormat类/Calendar类
- iOS 11下适配问题
- 操作数栈
- Redis 未授权访问漏洞
- MapReduce\Hadoop\HDFS上\Hive学习笔记
- linux--语句
- 【图像处理】MATLAB:彩色图像介绍
- RecyclerView 实现listview和gridview布局(各自的子布局不同,网络数据)
- path-sum
- 叉指换能器—此博文包含图片—声表面波的激励结构
- C中4大跳转语句的区别