java虛擬機器指令常量部分
助記表格
縮寫符 + const + 數字;
b(byte)/s(short)i(integer)push;
操作碼 | 助記符 | 指令含義 |
---|---|---|
00 (0x00) | nop | 什麼都不做 |
01 (0x01) | aconst_null | 將null推送到棧頂 |
02 (0x02) | iconst_m1 | 將int型別的-1推到棧頂 |
03 (0x03) | iconst_0 | 將int型別的0推送到棧頂 |
04 (0x04) | iconst_1 | 將int型別的1推送到棧頂 |
05 (0x05) | iconst_2 | 將int型別的2推送到棧頂 |
06 (0x06) | iconst_3 | 將int型別的3推送到棧頂 |
07 (0x07) | iconst_4 | 將int型別的4推送到棧頂 |
08 (0x08) | iconst_5 | 將int型別的5推送到棧頂 |
09 (0x09) | lconst_0 | 將long型別的0推送到棧頂 |
10 (0x0a) | lconst_1 | 將long型別的1推送到棧頂 |
11 (0x0b) | fconst_0 | 將float型別的0推送到棧頂 |
12 (0x0c) | fconst_1 | 將float型別的1推送到棧頂 |
13 (0x0d) | fconst_2 | 將float型別的2推送到棧頂 |
14 (0x0e) | dconst_0 | 將double型別的0推送到棧頂 |
15 (0x0f) | dconst_1 | 將double型別的1推送到棧頂 |
16 (0x10) | bipush | 將單位元組的常量值(-128~127)推送到棧頂 |
17 (0x11) | sipush | 將一個短整型類常量(-32768~32767 推送到棧頂) |
18 (0x12) | ldc | 將int,float或String型別常量值從常量池推送到棧頂 |
19 (0x13) | ldc_w | 將int,float或String型別常量值從常量池推送到棧頂(寬索引) |
20 (0x14) | ldc2_w | 將long或double型別常量值從常量池推送到棧頂(寬索引) |
案例
這裡用一段簡單的程式碼看看改變一個數的區別
public class test{
private int i = 0;
public int inc(){
return i+1;
}
}
public class test{
private int i = 0;
public int inc(){
return i+8;
}
}
public class test{
private int i = 0;
public int inc(){
return i+38888;
}
}
總結
通過上面的案例,我們可以看到改變加數的範圍,對應的指令跟著改變。以int為例,在 -1 ~ 5之間都可以直接通過iconst類的指令直接獲取,在-32768~32767之間則變成了sipush,而再超過這個範圍,加數就會先進常量池,再通過idc指令執行獲取。
相關文章
- JAVA虛擬機器-方法區與字串常量池Java虛擬機字串
- Java虛擬機器--方法區(執行時常量池)Java虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- 詳解Java 虛擬機器(第③篇)——String 類和常量池Java虛擬機
- 在Java虛擬機器中,字串常量到底存放在哪Java虛擬機字串
- Java虛擬機器(JVM)Java虛擬機JVM
- java~graalVM虛擬機器JavaLVM虛擬機
- Golang實現JAVA虛擬機器-指令集和直譯器GolangJava虛擬機
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器16:MetaspaceJava虛擬機
- 備戰- Java虛擬機器Java虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- 深入理解java虛擬機器Java虛擬機
- Java 虛擬機器診斷利器Java虛擬機
- Java虛擬機器是什麼?Java虛擬機
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- LUA指令碼虛擬機器逃逸技術分析指令碼虛擬機
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- Java虛擬機器04——垃圾收集器Java虛擬機
- java虛擬機器類載入機制Java虛擬機
- Java 虛擬機器類載入機制Java虛擬機
- 深入理解Java虛擬機器(一)Java虛擬機
- Java 虛擬機器經典六問Java虛擬機
- 06.Java虛擬機器問題Java虛擬機
- 深入理解Java虛擬機器(二)Java虛擬機
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- Java 虛擬機器之六:javap工具Java虛擬機
- JAVA虛擬機器學習筆記Java虛擬機機器學習筆記
- 深入理解JAVA虛擬機器學習筆記18——位元組碼指令2(運算指令)Java虛擬機機器學習筆記
- 詳解Java 虛擬機器(第④篇)——8 種基本型別的包裝類和常量池Java虛擬機型別
- Java 虛擬機器之四:Java類載入機制Java虛擬機
- 深入理解Java虛擬機器 --- 垃圾回收器Java虛擬機
- Java虛擬機器(六):類載入機制Java虛擬機
- Java 虛擬機器垃圾收集機制詳解Java虛擬機
- 虛擬機器(三)虛擬機器配置靜態Ip虛擬機