自己動手寫 Python 虛擬機

海納

  • 出版商: 北京航空航天大學
  • 出版日期: 2019-06-01
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 頁數: 329
  • 裝訂: 平裝
  • ISBN: 7512429754
  • ISBN-13: 9787512429758
  • 相關分類: Python程式語言Compiler
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

本書按內容分為六個部分,*部分介紹語言虛擬機的基本概念,並實現字節碼解釋器;
第二部分,實現內嵌類型,如整數、字符串、列表和字典等;
第三部分,實現了函數;
第四部分,實現自定義類、對象和方法;
第五部分,實現垃圾回收,也就是自動內存管理;
第六部分,模塊和迭代。
本書的章節內容之間都有很強的依賴性,後面的章節內容都是在前面章節的基礎上去實現的,
所以讀者必須按部就班地從前向後閱讀,才能保證閱讀的流暢。
本書適合的人群包括:
在校大學生(可以通過本書掌握很多計算機工作運行的核心知識),以及對編譯器,編程語言感興趣的人。

作者簡介

海納

曾就職於人大金倉、網易遊戲,現就職於華為編譯器實驗室。
長期從事編譯器和編輯語言虛擬機的研發工作,擅長編譯器後端和垃圾回收機制。

目錄大綱

第1章編程語言虛擬機1
1.1編程語言的發展1
1.2編程語言虛擬機2
1.3開發環境5

第2章編譯流程6
2.1Python字節碼6
2.2詞法分析7
2.3文法分析10
2.4抽象語法樹13
2.4.1構建AST14
2.4.2遞歸程序的本質16
2.4.3訪問者模式21
2.4.4用Visitor重寫AST29

第3章二進製文件結構32
3.1pyc文件格式32
3.2加載CodeObject34
3.2.1準備工具36
3.2.2創建CodeObject41
3.3整理工程結構47
3.4執行字節碼49

第4章實現控制流55
4.1分支結構55
4.1.1條件判斷56
4.1.2跳轉59
4.1.3True、False和None60
4.2循環結構62
4.2.1變量62
4.2.2循環內的跳轉67

第5章基本的數據類型75
5.1KlassOop二元結構75
5.2整數78
5.3字符串82

第6章函數和方法85
6.1函數85
6.1.1棧幀86
6.1.2創建FunctionObject89
6.1.3調用方法92
6.2變量和參數96
6.2.1LEGB規則96
6.2.2函數的參數104
6.2.3參數默認值107
6.3Native函數111
6.4方法115

第7章列表和字典122
7.1列表122
7.1.1列表的定義122
7.1.2操作列表126
7.2字典154
7.2.1字典的定義154
7.2.2操作字典157
7.3增強函數功能165
7.3.1靈活多變的函數參數165
7.3.2閉包和函數修飾器172
7.4總結179

第8章類和對象180
8.1類型對象180
8.1.1TypeObject180
8.1.2object185
8.1.3通過類型創建對象189
8.2自定義類型191
8.3創建對象196
8.4操作符重載206
8.5繼承215

第9章垃圾回收223

9.1自動內存管理223
9.1.1概念定義223
9.1.2引用計數224
9.1.3圖的知識226
9.1.4Tracing GC231
9.2複製回收234
9.2.1算法描述234
9.2.2算法實現235
9.2.3建堆237
9.2.4在堆中創建對象243
9.2.5垃圾回收247

第10章模塊和庫261
10.1import語句261
10.1.1ModuleObject262
10.1.2加載模塊264
10.1.3from子句266
10.2builtin模塊268
10.3加載動態庫271
10.3.1定義接口27
10.3.2實現math module277

第11章迭代281
11.1異常281
11.1.1finally子句281
11.1.2break和continue287
11.1.3Exception291
11.2自定義迭代器類306
11.3Generator309
11.3.1yield語句309
11.3.2Generator對象311
11.4總結317
附錄APython2字節碼表318
附錄B高級算法321
B.1字符串查找321
B.2排序算法325
B.2.1快速排序325
B.2.2選擇排序328
B.2.3堆排序329