特定于类型的 Java 字节码指令具有单字符前缀来指定指令相关的类型。
在每种情况下,前缀选择都是有意义的,由类型的第一个字母组成(布尔型除外,它没有指令前缀)。然而,对象引用前缀似乎不合逻辑,因为o
和r
(两个首字母)都是自由的。相反,对象引用指令a
用作它们的前缀。
为什么对象引用字节码指令的前缀是a
,而不是看似更合适的o
or r
?
特定于类型的 Java 字节码指令具有单字符前缀来指定指令相关的类型。
在每种情况下,前缀选择都是有意义的,由类型的第一个字母组成(布尔型除外,它没有指令前缀)。然而,对象引用前缀似乎不合逻辑,因为o
和r
(两个首字母)都是自由的。相反,对象引用指令a
用作它们的前缀。
为什么对象引用字节码指令的前缀是a
,而不是看似更合适的o
or r
?
那张桌子有问题。没有字节码指令处理,boolean
因此没有以“z”开头的指令名称。“z”可能来自类型签名 whereZ
代表,boolean
但这与类型签名不同,J
代表long
并L
开始一个类名。所以那里没有一致性。对于指令,“a”可能代表地址,因为astore
指令也能够将返回地址存储到局部变量中。也许,在更早的时候,更多的这些 a… 指令能够处理对象以外的地址,并且后来受到限制。
这可能是因为r
指的returnAddress
是 JVM 内部使用的类型。