5

特定于类型的 Java 字节码指令具有单字符前缀来指定指令相关的类型。

在此处输入图像描述 取自Wikipedia 关于 Java 字节码的条目

在每种情况下,前缀选择都是有意义的,由类型的第一个字母组成(布尔型除外,它没有指令前缀)。然而,对象引用前缀似乎不合逻辑,因为or(两个首字母)都是自由的。相反,对象引用指令a用作它们的前缀。

为什么对象引用字节码指令的前缀是a,而不是看似更合适的oor r

4

2 回答 2

3

那张桌子有问题。没有字节码指令处理,boolean因此没有以“z”开头的指令名称。“z”可能来自类型签名 whereZ代表,boolean但这与类型签名不同,J代表longL开始一个类名。所以那里没有一致性。对于指令,“a”可能代表地址,因为astore指令也能够将返回地址存储到局部变量中。也许,在更早的时候,更多的这些 a… 指令能够处理对象以外的地址,并且后来受到限制。

于 2013-09-27T18:14:02.627 回答
1

这可能是因为r指的returnAddress是 JVM 内部使用的类型。

于 2013-09-27T01:24:08.247 回答