首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是操作数堆栈?

什么是操作数堆栈?
EN

Stack Overflow用户
提问于 2014-06-26 09:35:07
回答 1查看 14.1K关注 0票数 46

我正在阅读有关JVM体系结构的内容。今天我读到了操作数堆栈的概念。根据一篇文章:

在字节码指令的执行过程中,操作数堆栈的使用方式类似于在本机CPU中使用通用寄存器。

我不明白:操作数堆栈到底是什么,以及它在jvm中是如何工作的?

EN

回答 1

Stack Overflow用户

发布于 2014-06-26 09:38:53

操作数堆栈保存运算符用于执行操作的操作数。操作数堆栈上的每个条目都可以保存任何Java虚拟机类型的值。

来自JVM规范

Java虚拟机指令从操作数堆栈中获取操作数,对操作数进行操作,并将结果推回操作数堆栈。操作数堆栈还用于准备传递给方法的参数和接收方法结果。

例如,iadd指令将添加两个整数值,因此它将弹出操作数堆栈中的前两个整数值,并将结果添加到操作数堆栈中。

有关更详细的参考资料,您可以检查JVMS#2.5 :运行时数据区域

在操作数堆栈的上下文中对其进行总结,

代码语言:javascript
复制
    _______________________________
   |        _____________________  |
   |       |         + --------+ | |
   |  JVM  |         | Operand | | | 
   | Stack |  FRAME  |  Stack  | | |
   |       |         +---------+ | |
   |       |_____________________| |
   |_______________________________|
  • JVM支持多线程执行环境。每个执行线程都在创建线程的同时创建了其私有java虚拟机堆栈(JVM Stack)。
  • 这个Java虚拟机堆栈存储帧。框架保存数据、部分结果、方法返回值并执行动态链接。
  • 每个框架都包含堆栈,称为操作数堆栈,它保存JVM类型的操作数值。在编译时确定操作数堆栈的深度,并使用操作符进行更新。
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24427056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档