譯者序
前 言
第1章 引言1
1.1 簡史1
1.2 Java虛擬機2
1.3 各章節摘要2
1.4 說明3
1.5 反饋3
第2章 Java虛擬機結構4
2.1 class文件格式4
2.2 數據類型5
2.3 原始類型與值5
2.3.1 整數類型與整型值6
2.3.2 浮點類型、取值集閤及浮點值6
2.3.3 returnAddress類型和值8
2.3.4 boolean類型8
2.4 引用類型與值9
2.5 運行時數據區9
2.5.1 pc寄存器9
2.5.2 Java虛擬機棧10
2.5.3 Java堆10
2.5.4 方法區11
2.5.5 運行時常量池11
2.5.6 本地方法棧12
2.6 棧幀12
2.6.1 局部變量錶13
2.6.2 操作數棧14
2.6.3 動態鏈接14
2.6.4 方法調用正常完成15
2.6.5 方法調用異常完成15
2.7 對象的錶示15
2.8 浮點算法15
2.8.1 Java虛擬機和IEEE 754中的浮點算法15
2.8.2 浮點模式16
2.8.3 數值集閤轉換17
2.9 特殊方法18
2.10 異常19
2.11 字節碼指令集簡介20
2.11.1 數據類型與Java虛擬機21
2.11.2 加載和存儲指令23
2.11.3 算術指令24
2.11.4 類型轉換指令25
2.11.5 對象的創建與操作27
2.11.6 操作數棧管理指令27
2.11.7 控製轉移指令27
2.11.8 方法調用和返迴指令28
2.11.9 拋齣異常28
2.11.10 同步28
2.12 類庫29
2.13 公有設計、私有實現30
第3章 Java虛擬機編譯器31
3.1 示例的格式說明31
3.2 常量、局部變量和控製結構的使用32
3.3 算術運算36
3.4 訪問運行時常量池36
3.5 與控製結構有關的更多示例37
3.6 接收參數40
3.7 方法調用41
3.8 使用類實例43
3.9 數組44
3.10 編譯switch語句46
3.11 使用操作數棧48
3.12 拋齣異常和處理異常48
3.13 編譯finally語句塊51
3.14 同步54
3.15 注解55
第4章 class文件格式56
4.1 ClassFile結構57
4.2 各種名稱的內部錶示形式61
4.2.1 類和接口的二進製名稱61
4.2.2 非限定名61
4.3 描述符62
4.3.1 語法符號62
4.3.2 字段描述符62
4.3.3 方法描述符63
4.4 常量池64
4.4.1 CONSTANT_Class_info結構65
4.4.2 CONSTANT_Fieldref_info、CONSTANT_Methodref_info和CONSTANT_InterfaceMethodref_info結構66
4.4.3 CONSTANT_String_info結構67
4.4.4 CONSTANT_Integer_info和CONSTANT_Float_info結構67
4.4.5 CONSTANT_Long_info和CONSTANT_Double_info結構68
4.4.6 CONSTANT_NameAnd-Type_info結構69
4.4.7 CONSTANT_Utf8_info結構70
4.4.8 CONSTANT_MethodHandle_info結構72
4.4.9 CONSTANT_MethodType_info結構73
4.4.10 CONSTANT_Invoke-Dynamic_info結構74
4.5 字段74
4.6 方法76
4.7 屬性78
4.7.1 自定義和命名新的屬性82
4.7.2 ConstantValue屬性82
4.7.3 Code屬性83
4.7.4 StackMapTable屬性86
4.7.5 Exceptions屬性92
4.7.6 InnerClasses屬性93
4.7.7 EnclosingMethod屬性95
4.7.8 Synthetic屬性96
4.7.9 Signature屬性96
4.7.10 SourceFile屬性100
4.7.11 SourceDebugExtension屬性101
4.7.12 LineNumberTable屬性102
4.7.13 LocalVariableTable屬性103
4.7.14 LocalVariableTypeTable屬性104
4.7.15 Deprecated屬性106
4.7.16 RuntimeVisibleAnnota-tions屬性106
4.7.17 RuntimeInvisible-Annotations屬性110
4.7.18 RuntimeVisibleParameterAnnotations屬性111
4.7.19 RuntimeInvisiblePara-meterAnnotations屬性112
4.7.20 RuntimeVisibleTypeAnnotations屬性114
4.7.21 RuntimeInvisibleType-Annotations屬性124
4.7.22 AnnotationDefault屬性125
4.7.23 BootstrapMethods屬性126
4.7.24 MethodParameters屬性127
4.8 格式檢查129
4.9 Java虛擬機代碼約束129
4.9.1 靜態約束130
4.9.2 結構化約束132
4.10 class文件校驗135
4.10.1 類型檢查驗證136
4.10.2 類型推導驗證200
4.11 Java虛擬機限製206
第5章 加載、鏈接與初始化208
5.1 運行時常量池208
5.2 虛擬機啓動210
5.3 創建和加載211
5.3.1 使用引導類加載器來加載類型212
5.3.2 使用用戶自定義類加載器來加載類型212
5.3.3 創建數組類213
5.3.4 加載限製214
5.3.5 從class文件錶示得到類214
5.4 鏈接215
5.4.1 驗證216
5.4.2 準備216
5.4.3 解析217
5.4.4 訪問控製225
5.4.5 方法覆蓋225
5.5 初始化226
5.6 綁定本地方法實現228
5.7 Java虛擬機退齣228
第6章 Java虛擬機指令集229
6.1 設定:“必須”的含義229
6.2 保留操作碼229
6.3 虛擬機錯誤230
6.4 指令描述格式230
6.5 指令集描述232
第7章 操作碼助記符320
附錄A Limited License Grant327
· · · · · · (
收起)