麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

JVM字節碼初探

2019-11-11 05:16:03
字體:
來源:轉載
供稿:網友

字節碼格式

字節碼是JVM的機器語言。JVM加載類文件時,對類中的每個方法,它都會得到一個字節碼流。這些字節碼流保存在JVM的方法區中。在程序運行過程中,當一個方法被調用時,它的字節碼流就會被執行。根據特定JVM設計者的選擇,它們可以通過解釋的方式,即時編譯(Just-in-time compilation)的方式或其他技術的方式被執行。

方法的字節碼流就是JVM的指令(instruction)序列。每條指令包含一個單字節的操作碼(opcode)和0個或多個操作數(Operand)。操作碼指明要執行的操作。如果JVM在執行操作前,需要更多的信息,這些信息會以0個或多個操作數的方式,緊跟在操作碼的后面。

每種類型的操作碼都有一個助記符(mnemonic)。類似典型的匯編語言風格,java字節碼流可以用它們的助記符和緊跟在后面的操作數來表示。

字節碼指令集被設計的很緊湊。除了處理跳表的2條指令以外,所有的指令都以字節邊界對齊。操作碼的總數很少,一個字節就能搞定。這最小化了JVM加載前,通過網絡傳輸的類文件的大小;也使得JVM可以維持很小的實現。

JVM中,所有的計算都是圍繞棧(stack)而展開的。因為JVM沒有存儲任意數值的寄存器(register),所有的操作數在計算開始之前,都必須先壓入棧中。因此,字節碼指令主要是用來操作棧的。例如,在上面的字節碼序列中,通過iload_0先把本地變量(local variable)入棧,然后用iconst_2把數字2入棧的方式,來計算本地變量乘以2。兩個整數都入棧之后,imul指令有效的從棧中彈出它們,然后做乘法,最后把運算結果壓入棧中。istore_0指令把結果從棧頂彈出,保存回本地變量。JVM被設計成基于棧,而不是寄存器的機器,這使得它在如80486寄存器架構不佳的處理器上,也能被高效的實現。

原始類型(PRimitive types)

JVM支持7種原始數據類型。Java程序員可以聲明和使用這些數據類型的變量,而Java字節碼,處理這些數據類型。下表列出了這7種原始數據類型:

類型定義
byte單字節有符號二進制補碼整數
short2字節有符號二進制補碼整數
int4字節有符號二進制補碼整數
long8字節有符號二進制補碼整數
float4字節IEEE 754單精度浮點數
double8字節IEEE 754雙精度浮點數
char2字節無符號Unicode字符

原始數據類型以操作數的方式出現在字節碼流中。所有長度超過1字節的原始類型,都以大端(big-endian)的方式保存在字節碼流中,這意味著高位字節出現在低位字節之前。例如,為了把常量值256(0x0100)壓入棧中,你可以用sipush操作碼,后跟一個短操作數。短操作數會以“01 00”的方式出現在字節碼流中,因為JVM是大端的。如果JVM是小端(little-endian)的,短操作數將會是“00 01”。

字節碼基本準則

1.字長是根據JVM不同而定的,一般(并非一定)在32位機上是4個字節,64位機上是8個字節(使用8個字節很可能會潛在地存在內存浪費的情況),JVM規范上要求1個字必須至少能容納integer型的值(4字節),2個字必須至少能容納long型的值(8個字節)。JVM有不少定義會以字為單位,譬如reference(引用)、本地變量和棧2.JVM操作由操作碼和操作數組成,操作碼是1字節的,因此最多只有256個操作碼,操作數從0-n個字節不等(0表示沒有操作數,一般是指令參數通過操作棧來獲取,n不定,譬如像TABLESWITCH和LOOKUPSWITCH指令),即指令=操作碼+操作數3.每個操作如果需要從操作棧中讀參數,則總是將這些參數出棧,如果操作有結果結果,總是會將結果入棧,后面可能會重復提到一點,如果沒有提到,這是一個參考準則4本地變量是以字為單位(如上,32位機一般是4個字節,也有一些64位的JVM字長是8個字節)為單位的,即使值是byte或short,對于long、double型的數據,在本地變量區中會占用2個位置(slot)5.操作棧是以字為單位(如上,32位機一般是4個字節) ,即使值是byte或short,而對于long、double型的數據,在操作棧中會占用2個位置(slot)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品一区在线观看 | 国产精品一区二区视频 | 亚洲爱爱网站 | 毛片免费观看视频 | 操碰97| 亚洲精品久久久久www | 日韩黄色免费电影 | 欧美精品在线免费观看 | www.17c亚洲蜜桃| 国产一级毛片高清 | 久久久久北条麻妃免费看 | 久久久久久久久久久久久久国产 | 202z中文字幕第一页 | 中午字幕无线码一区2020 | 美国av免费看| 一区二区国产在线 | 91一级毛片 | 久久精品艹 | 黄色a级片视频 | 日韩一级片一区二区三区 | 91精品国产91久久久久久丝袜 | 国产深夜福利视频在线播放 | 黄色大片在线免费看 | 狠狠婷婷综合久久久久久妖精 | 久久性生活免费视频 | 羞羞的动漫在线观看 | www.99久 | 久久久久久久久国产 | 国产免费视频一区二区裸体 | 久久精品亚洲精品国产欧美kt∨ | 久久网综合 | 国产一国产精品一级毛片 | 精品一区二区久久久久久久网精 | 一本视频在线观看 | 久久亚洲精选 | 黄网站在线免费 | 成人一级免费 | 久久国产一级片 | 中午字幕无线码一区2020 | 精国产品一区二区三区四季综 | 久久密|