jvm位元組碼指令運算元為什麼不對齊?

時間 2021-06-02 21:50:15

1樓:dwing

JVM的位元組碼是完全平台無關的, 所以制定了明確的編碼規則, 在上世紀大端儲存也占有不少的市場, 不像現在幾乎全被小端佔據了, TCP/IP的頭結構也是上世紀制定時選擇了大端作為平台無關的規則, 因此JVM選擇大端無可厚非.

至於對齊, JVM的非定長指令主要是為了讓位元組碼更緊湊, x86/x64指令集也是如此, 這樣設計也沒什麼錯.

選擇小端和定長指令無非是為了效能, 其實這個問題也好解決, 載入位元組碼的時候可以做一遍轉換, 變成平台相關的大小端和定長的更接近平台所用CPU的特定位元組碼就好了, 解釋執行轉換後的位元組碼效能更高, 當然能JIT執行就更無所謂JVM位元組碼的格式了.

2樓:Aray

書上只是嘗試用「簡潔準確」的語言,讓讀者快速理解class檔案的結構。

JVM只是乙個規範,只要滿足規範可以自由實現,自由優化。

所以,我猜測,沒有虛擬機器實現,是真正的做了位移操作後在來或操作的。

我猜測,在class loading階段,直接就將這2位元組解析為乙個整型了。

為什麼乙個位元組只能編出256個不同的碼?

小白龍 嚴肅回答 因為乙個位元組是8位二進位制數,只能表示0至255,共256個十進位制數,所以乙個位元組只能編出256個碼。嘲諷式回答 題主應當打回小學重新修煉 路人甲 呵呵,這問題問的,我打個比方吧,可能不對啥,畢竟職高出來的。你可以想乙個開關,開是1,關是0,假設串聯電路有8個開關,串聯,那麼...

什麼是位元組對齊,為什麼要對齊

Fun Lee 首先要知道我們現代計算機的記憶體空間是按照位元組 byte 來劃分的,然後位元組對齊的意思是說我們在給特定變數型別分配記憶體空間的時候,變數的記憶體位址要是它本身變數型別大小的整數倍。比如說,我給int型別的變數a分配位址空間,因為int型別大小為4位元組,所以它的記憶體位址一定也要...

你為什麼來位元組跳動工作?

小土菌 想說,看你自己的追求,以及對應的崗位吧。如果你的職業發展方向和位元組的崗位一致,那我其實很建議去,畢竟現在很多優秀的人都往那裡走,圈子大了,自我成長也能很快提公升。但是,如果只是因為位元組這個廠牌名,崗位不是很一致,然後崗位性質偏銷售,那我不是很建議去,因為去了也會很快離開的。所以,建議綜合...