Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么是';a';对象引用的Java字节码前缀?_Java_Bytecode_Instructions - Fatal编程技术网

为什么是';a';对象引用的Java字节码前缀?

为什么是';a';对象引用的Java字节码前缀?,java,bytecode,instructions,Java,Bytecode,Instructions,特定于类型的Java字节码指令具有单字符前缀,用于指定与指令相关的类型 取自 在每种情况下,前缀选择都有意义,由类型的第一个字母组成(布尔值除外,它没有指令前缀)。然而,对象引用前缀似乎不符合逻辑,因为o和r(前两个字母)都是自由的。相反,对象引用指令使用a作为前缀 为什么对象引用字节码指令的前缀是a,而不是看起来更合适的o或r?这可能是因为r指的是JVM内部使用的类型。该表有问题。没有处理布尔值的字节码指令,因此没有以“z”开头的指令名。“z”可能来自类型签名,其中z代表boolean,但这

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

取自

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


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

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

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

这的确是一个有趣的问题,但有点像“猜测他们在想什么”类型的问题,这可能不适合这个网站。这个问题似乎离题了,因为它是关于读心术的Java开发人员。可能是HTML中的nchor类。@SotiriosDelimanolis可能,但“锚定”与对象引用有什么关系?见鬼,如果我知道。。。在HTML中,它更多的是指超链接。我想你可以查看这样的引用。好主意,避免使用
r
而使用
returnAddress
,这绝对是合理的;我只是简单地从维基百科上弹出了这张桌子。我非常喜欢
a
表示地址的想法,因为对象引用本质上是指内存地址。很好的一点是,在指令中,引用的隐含字母是
a