天天看點

自己動手java虛拟機_自己動手寫Java虛拟機

目  錄

前言

第章 指令行工具

1.1 準備工作

1.1.1 安裝

1.1.2 安裝

1.1.3 建立目錄結構

1.2 指令

1.3 編寫指令行工具

1.4 測試本章代碼

1.5 本章小結

第章 搜尋檔案

2.1 類路徑

2.2 準備工作

2.3 實作類路徑

2.3.1 接口

2.3.2

2.3.3

2.3.4

2.3.5

2.3.6

2.4 測試本章代碼

2.5 本章小結

第章 解析檔案

3.1 檔案

3.2 解析檔案

3.2.1 讀取資料

3.2.2 整體結構

3.2.3 魔數

3.2.4 版本号

3.2.5 類通路标志

3.2.6 類和超類索引

3.2.7 接口索引表

3.2.8 字段和方法表

3.3 解析常量池

3.3.1 結構體

3.3.2 接口

3.3.3

3.3.4

3.3.5

3.3.6

3.3.7

3.3.8

3.3.9

3.3.10

3.3.11 、

3.3.12 常量池小結

3.4 解析屬性表

3.4.1 接口

3.4.2 和屬性

3.4.3 屬性

3.4.4 屬性

3.4.5 屬性

3.4.6 屬性

3.4.7 和

屬性

3.5 測試本章代碼

3.6 本章小結

第章 運作時資料區

4.1 運作時資料區概述

4.2 資料類型

4.3 實作運作時資料區

4.3.1 線程

4.3.2 虛拟機棧

4.3.3 幀

4.3.4 局部變量表

4.3.5 操作數棧

4.3.6 局部變量表和操作數棧執行個體分析

4.4 測試本章代碼

4.5 本章小結

第章 指令集和解釋器

5.1 位元組碼和指令集

5.2 指令和指令解碼

5.2.1 接口

5.2.2

5.3 常量指令

5.3.1 指令

5.3.2 系列指令

5.3.3 和指令

5.4 加載指令

5.5 存儲指令

5.6 棧指令

5.6.1 和指令

5.6.2 指令

5.6.3 指令

5.7 數學指令

5.7.1 算術指令

5.7.2 位移指令

5.7.3 布爾運算指令

5.7.4 指令

5.8 類型轉換指令

5.9 比較指令

5.9.1 指令

5.9.2 和指令

5.9.3 指令

5.9.4 指令

5.9.5 指令

5.10 控制指令

5.10.1 指令

5.10.2 指令

5.10.3 指令

5.11 擴充指令

5.11.1 指令

5.11.2 和指令

5.11.3 指令

5.12 解釋器

5.13 測試本章代碼

5.14 本章小結

第章 類和對象

6.1 方法區

6.1.1 類資訊

6.1.2 字段資訊

6.1.3 方法資訊

6.1.4 其他資訊

6.2 運作時常量池

6.2.1 類符号引用

6.2.2 字段符号引用

6.2.3 方法符号引用

6.2.4 接口方法符号引用

6.3 類加載器

6.3.1

6.3.2

6.3.3

6.4 對象、執行個體變量和類變量

6.5 類和字段符号引用解析

6.5.1 類符号引用解析

6.5.2 字段符号引用解析

6.6 類和對象相關指令

6.6.1 指令

6.6.2 和指令

6.6.3 和指令

6.6.4 和指令

6.6.5 指令

6.7 測試本章代碼

6.8 本章小結

第章 方法調用和傳回

7.1 方法調用概述

7.2 解析方法符号引用

7.2.1 非接口方法符号引用

7.2.2 接口方法符号引用

7.3 方法調用和參數傳遞

7.4 傳回指令

7.5 方法調用指令

7.5.1 指令

7.5.2 指令

7.5.3 指令

7.5.4 指令

7.6 改進解釋器

7.7 測試方法調用

7.8 類初始化

7.9 本章小結

第章 數組和字元串

8.1 數組概述

8.2 數組實作

8.2.1 數組對象

8.2.2 數組類

8.2.3 加載數組類

8.3 數組相關指令

8.3.1 指令

8.3.2 指令

8.3.3 指令

8.3.4 aload指令

8.3.5 astore指令

8.3.6 指令

8.3.7 完善和指令

8.4 測試數組

8.5 字元串

8.5.1 字元串池

8.5.2 完善指令

8.5.3 完善類加載器

8.6 測試字元串

8.7 本章小結

第章 本地方法調用

9.1 注冊和查找本地方法

9.2 調用本地方法

9.3 反射

9.3.1 類和對象之間的關系

9.3.2 修改類加載器

9.3.3 基本類型的類

9.3.4 修改指令

9.3.5 通過反射擷取類名

9.3.6 測試本節代碼

9.4 字元串拼接和方法

9.4.1 類庫

9.4.2 方法

9.4.3 和方法

9.4.4 方法

9.4.5 測試本節代碼

9.5 、和

9.6

9.7 自動裝箱和拆箱

9.8 本章小結

第章 異常處理

10.1 異常處理概述

10.2 異常抛出

10.3 異常處理表

10.4 實作指令

10.5 虛拟機棧資訊

10.6 測試本章代碼

10.7 本章小結

第章 結束

11.1 類是如何被初始化的

11.2 初始化類

11.3 是如何工作的

11.4 測試本章代碼

11.5 總結

附錄 指令表