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