首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JVM Java虚拟机和栈

JVM Java虚拟机和栈
EN

Stack Overflow用户
提问于 2013-08-26 18:06:49
回答 1查看 1K关注 0票数 0

我有一个我感兴趣的查询,我想要一个完整的解释,虽然我在任何地方都找不到答案,但是谁能向我解释一下JVM (Java虚拟机)是如何使用堆栈和堆栈帧来组织它的计算的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-26 18:34:09

Java字节码是一个所谓的面向堆栈的编程语言。这个模型被许多虚拟机使用--与物理机器的体系结构形成对比。

下面是一个示例:

代码语言:javascript
运行
复制
public static int foobar(int value) {
    return value + 42;
}

此方法的Java字节码如下所示:

代码语言:javascript
运行
复制
iload_0
bipush 42
iadd
ireturn

这些指令不使用寄存器。相反,他们使用堆栈进行计算:

  • 将第一个参数推到堆栈上。
  • 将常量42推到堆栈上。
  • 从堆栈中弹出两个元素,添加它们并将结果推到堆栈上。
  • 从堆栈中弹出顶部元素并返回它。

所有其他Java字节码操作都是一样的。没有可以使用的寄存器。所有操作在堆栈上推送和/或弹出元素。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18450232

复制
相关文章

相似问题

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