0

我一直在学习 java 类格式,我只是想知道为什么有时带有常量池条目的操作码会占用类文件中的两个字节,例如使用 InvokeStatic,但随后操作码(例如带有整数索引的 ldc)会占用在类文件中只增加一个字节。这背后有什么模式吗,我问这个是因为我正在编写一个简单的字节码操作库,并且我希望能够知道天气以将常量池索引写为字节或短,而无需对每一个进行硬编码命令进入图书馆。

4

1 回答 1

1

是的,有一个模式:每条指令都ldc需要一个两字节索引。

据推测,字节码格式的设计者认为加载常量是一项如此常见的任务,他们应该为它提供更短的指令。

于 2013-07-02T14:42:26.323 回答