为什么“a”是对象引用的 Java 字节码前缀? [关闭]

2024-03-06

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

enter image description here Taken from Wikipedia's entry on Java bytecode http://en.wikipedia.org/wiki/Java_bytecode

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

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


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“a”是对象引用的 Java 字节码前缀? [关闭] 的相关文章

随机推荐