特定於類型的Java字節碼指令具有單字符前綴來指定指令所涉及的類型。爲什麼'a'是對象引用的Java字節碼前綴?
從Wikipedia's entry on Java bytecode
採取每種情況下,前綴選擇是有道理的,由該類型的第一個字母(除布爾值,它不具有指令前綴)。然而,對象引用前綴似乎並不合邏輯,因爲o
和r
(兩個首字母)都是空閒的。相反,對象參考指令使用a
作爲它們的前綴。
爲什麼對象引用字節碼指令前綴爲a
,而不是看起來更合適的o
或r
?
特定於類型的Java字節碼指令具有單字符前綴來指定指令所涉及的類型。爲什麼'a'是對象引用的Java字節碼前綴?
從Wikipedia's entry on Java bytecode
採取每種情況下,前綴選擇是有道理的,由該類型的第一個字母(除布爾值,它不具有指令前綴)。然而,對象引用前綴似乎並不合邏輯,因爲o
和r
(兩個首字母)都是空閒的。相反,對象參考指令使用a
作爲它們的前綴。
爲什麼對象引用字節碼指令前綴爲a
,而不是看起來更合適的o
或r
?
該表值得懷疑。沒有字節碼指令處理boolean
,因此沒有以「z」開頭的指令名稱。 「z」可能來自類型簽名,其中Z
代表boolean
,但這不同於類型簽名J
代表long
和L
開始類名稱。所以這裏沒有一致性。對於指令「a」可能代表地址,因爲astore
指令也能夠將返回地址存儲到本地變量中。也許,在更早的時候,更多的這些...指令能夠處理除對象之外的地址,並且以後受到限制。
非常真實,我沒有想到這一點;我只是從維基百科彈出表格。我非常喜歡「a」含義地址的概念,因爲對象引用本質上是指內存地址。 – Vulcan
一個有趣的問題,可以肯定,但有點「猜他們在想什麼」類型的問題,這可能不適合本網站。 –
這個問題似乎是無關緊要的,因爲它是關於閱讀Java開發人員的想法。 – Antimony
也許是像HTML一樣的** a nchor。 –