●第1章 公共語言運行時概述
1.1.1 .NET框架簡介
1.1.2 公共語言運行時中的各個組成部分
1.1.3 名稱規範
第2章 MSIL入門
第l節 逆向.NET程序到IL
2.1.1 ildasm
2.1.2 使用ILSpy
2.1.3 dnSpy
第2節 基礎語法
2.2.1 IL語法格式
2.2.2 IL指令格式
2.2.3 評價堆棧
2.2.4 常用指令
2.2.5 常見的C#代碼與IL代碼的對比
第3節 流程控制
2.3.1 IL流程控制
2.3.2 常見的流程控制C#代碼與IL代碼對比
第3章 x86彙編入門
第1節 彙編與機器碼
3.1.1 理解彙編語言與機器碼
3.1.2 RISC與CISC
3.1.3 流水線
第2節 內存
3.2.1 位與字節
3.2.2 負數的表現
3.2.3 小端與大端
3.2.4 內存地址
3.2.5 虛擬內存
3.2.6 了解虛擬內存的實現
第3節 寄存器
3.3.1 通用寄存器
3.3.2 程序計數器
3.3.3 標志寄存器
第4節 基礎指令
3.4.1 彙編指令記法
3.4.2 彙編指令格式
3.4.3 彙編指令簡寫
3.4.4 基礎彙編指令
3.4.5 更多指令
3.4.6 機器碼的編碼方式
第5節 流程控制
3.5.1 流程控制實現
3.5.2 比較指令
3.5.3 跳轉指令
3.5.4 其他流程控制
3.5.5 分支預測
第6節 函數調用
3.6.1 棧結構
3.6.2 函數調用
3.6.3 enter與leave指令
3.6.4 調用規範
第7節 繫統調用
3.7.1 繫統調用簡介
3.7.2 在x86上發起繫統調用(軟中斷)
3.7.3 在x86上發起繫統調用(sysenter)
3.7.4 在x86-64上發起繫統調用(syscall)
第8節 內存屏障
3.8.1 亂序執行
3.8.2 內存屏障簡介
3.8.3 雙檢鎖
第4章 編譯與調試CoreCLR
第1節 在Windows上編譯CoreCLR
4.1.1 準備編譯環境
4.1.2 下載CoreCLR源代碼
4.1.3 編譯CoreCLR
4.1.4 使用編譯出來的CoreCLR
4.1.5 近期新的編譯文檔
第2節 在Windows上調試coreCLR
4.2.1 使用Visual Studio調試CoreCLR
4.2.2 使用WinDbg調試CoreCLR
4.2.3 在WinDbg中使用SOS擴展
4.2.4 更方便地調試托管方法對應的彙編代碼
第3節 在Linux上編譯CoreCLR
第4節 在Linux上調試CoreCLR
4.4.1 使用LLDB調試CoreCLR
4.4.2 在LLDB中使用SOS擴展
第5章 異常處理實現
第6章 多線程實現
第7章 GC垃圾回收實現
第8章 JIT編譯器實現
附錄A 中英文專業名詞對照表
附錄B 常用IL指令一覽
附錄C 常用彙編指令一覽
附錄D SOS擴展命令一覽
附錄E IR語法樹節點類型一覽
參考文獻