首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么Java字节码指令集不是正交的?

为什么Java字节码指令集不是正交的?
EN

Software Engineering用户
提问于 2015-05-21 00:40:22
回答 1查看 581关注 0票数 4

JVM 8规范第2.11.1节包括:

换句话说,指令集是有意不正交的。

在我看来,这意味着Java字节码指令集充满了肮脏的漏洞。我知道设计者只被限制在一个字节内来表示操作码,但是他们消耗了8个操作码来表示非正交操作码,更不用说iload、fload、dload等单独的操作码了。我认为使指令集非正交的唯一原因是对内存受限的系统进行优化;这些设计决策似乎使编写优化器变得更加困难,更不用说限制指令集了。

我肯定漏掉了什么。为什么Java设计人员会这样做呢?

**当我说“内存受限”时,我指的是字节码本身的大小。他们使用aload_0的原因大概是因为它比aload 0节省了一个字节,而且它被使用了很多。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-05-28 19:25:41

我肯定漏掉了什么。为什么Java设计人员会这样做呢?

Java起源于最初打算用于“智能设备”的橡树。它最初是在1991年开发的。所以我们说的是老式的嵌入式系统,受到90年代早期标准的高度资源限制。

今天,当“嵌入式系统”可能意味着一台简约但功能齐全的电脑,售价9美元。时,建筑师们似乎有点难以置信,但在将近25年前,在这里保存一个字节,在一个嵌入式系统上保存一个字节仍然是一件大事。

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

https://softwareengineering.stackexchange.com/questions/284500

复制
相关文章

相似问题

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