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虛擬機器(轉)Java虛擬機
- Golang實現JAVA虛擬機器-指令集和直譯器GolangJava虛擬機
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- 備戰- Java虛擬機器Java虛擬機
- Java虛擬機器16:MetaspaceJava虛擬機
- Java虛擬機器面試題Java虛擬機面試題
- .Net框架 = Java虛擬機器?框架Java虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- Java虛擬機器 —— 垃圾回收機制Java虛擬機
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- 《深入理解java虛擬機器》學習筆記4——Java虛擬機器垃圾收集器Java虛擬機筆記
- 深入理解java虛擬機器Java虛擬機
- Java 虛擬機器診斷利器Java虛擬機
- Java虛擬機器的組成Java虛擬機
- Java虛擬機器是什麼?Java虛擬機
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- Java虛擬機器8:虛擬機器效能監控與故障處理工具Java虛擬機
- 《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體Java虛擬機記憶體
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- Java虛擬機器1:什麼是JavaJava虛擬機
- java虛擬機器類載入機制Java虛擬機
- Java 虛擬機器類載入機制Java虛擬機
- Java虛擬機器04——垃圾收集器Java虛擬機
- Java虛擬機器10:類載入器Java虛擬機
- LUA指令碼虛擬機器逃逸技術分析指令碼虛擬機
- jvm 虛擬機器位元組碼指令表JVM虛擬機
- Java虛擬機器9:Java類載入機制Java虛擬機
- 深入理解Java虛擬機器8 虛擬機器位元組碼執行引擎Java虛擬機
- 《深入理解java虛擬機器》學習筆記7——Java虛擬機器類生命週期Java虛擬機筆記
- 虛擬機器虛擬機