簡介
將由作者本人設計,使用開放原始碼的Python程式語言作為指令集架構,因技術成熟與IC製程帶來的優勢將過去限制成為可能,將改變過去高階程式語言需要多次轉換問題,產生新的「可程式規劃裝置—程式語言指令集架構—軟體」新架構,將因Python豐富套件與廣大社群而邁向新的開放社群與模式。
同樣會帶著各位一步一步設計出此處理器,處理器的原始碼採開放授權,可以在此得到最新的內容
Python指令集處理器¶
「Python指令集處理器」(Python instruction set computer)是一個基於Python程式語言所製作出的指令集處理器,目的是讓Python程式語言可以直接在硬體直接執行,無須經過多次轉譯但又保留動態語言的特性,讓執行Python程式語言時一樣強大且便利同時快速。
對應的CPU該有的特性:
- 運算核心注重的是「複雜型可程式邏輯元件」(CPLD, Complex PLD)與「現場可程式閘陣列」(FPGA, Field Programmable Gate Array)數量而非實體核心數
- 在邏輯電路可以無限增加與無限制的條件下,指令集定義處理器的邏輯電路,實現高階型指令集
- 程式語言即是組合語言,也就是程式語言即是指令集
這樣的好處:
- 大幅簡化主機板所使用晶片與減少電子零件使用數量,加快與週邊硬體的溝通速度
- 擴充容易且可以持續改進
- 程式執行速度快,中間無須經過轉換
指令集¶
盡可能與最新版本的Python指令集同步,以跟上使用方式。
- 1. 淺嘗滋味
- 2. 使用 Python 直譯器 - 2.1. 啟動直譯器 - 2.1.1. 傳遞引數 - 2.1.2. 互動模式 - 2.2. 直譯器與它的環境 - 2.2.1. 原始碼的字元編碼 (encoding)
- 3. 一個非正式的 Python 簡介 - 3.1. 把 Python 當作計算機使用 - 3.1.1. 數字 (Number) - 3.1.2. 字串 (String) - 3.1.3. List(串列) - 3.2. 初探程式設計的前幾步
- 4. 深入了解流程控制
- 4.1.
if
陳述式 - 4.2.for
陳述式 - 4.3.range()
函式 - 4.4. 迴圈內的break
和continue
陳述式及else
子句 - 4.5.pass
陳述式 - 4.6.match
陳述式 - 4.7. 定義函式 (function) - 4.8. 深入了解函式定義 - 4.8.1. 預設引數值 - 4.8.2. 關鍵字引數 - 4.8.3. 特殊參數 - 4.8.3.1. 位置或關鍵字引數 (Positional-or-Keyword Arguments) - 4.8.3.2. 僅限位置參數 (Positional-Only Parameters) - 4.8.3.3. 僅限關鍵字引數 (Keyword-Only Arguments) - 4.8.3.4. 函式範例 - 4.8.3.5. 回顧 - 4.8.4. 任意引數列表 (Arbitrary Argument Lists) - 4.8.5. 拆解引數列表(Unpacking Argument Lists) - 4.8.6. Lambda 運算式 - 4.8.7. 說明文件字串 (Documentation Strings) - 4.8.8. 函式註釋 (Function Annotations) - 4.9. 間奏曲:程式碼風格 (Coding Style) - 5. 資料結構
- 5.1. 進一步了解 List(串列)
- 5.1.1. 將 List 作為 Stack(堆疊)使用
- 5.1.2. 將 List 作為 Queue(佇列)使用
- 5.1.3. List Comprehensions(串列綜合運算)
- 5.1.4. 巢狀的 List Comprehensions
- 5.2.
del
陳述式 - 5.3. Tuples 和序列 (Sequences) - 5.4. 集合 (Sets) - 5.5. 字典(Dictionary) - 5.6. 迴圈技巧 - 5.7. 深入了解條件 (Condition) - 5.8. 序列和其他資料類型之比較 - 6. 模組 (Module)
- 6.1. 深入了解模組
- 6.1.1. 把模組當作腳本執行
- 6.1.2. 模組的搜尋路徑
- 6.1.3. 「編譯」Python 檔案
- 6.2. 標準模組
- 6.3.
dir()
函式 - 6.4. 套件 (Package) - 6.4.1. 從套件中 import * - 6.4.2. 套件內引用 - 6.4.3. 多目錄中的套件 - 7. 輸入和輸出
- 7.1. 更華麗的輸出格式
- 7.1.1. 格式化的字串文本 (Formatted String Literals)
- 7.1.2. 字串的 format() method
- 7.1.3. 手動格式化字串
- 7.1.4. 格式化字串的舊方法
- 7.2. 讀寫檔案
- 7.2.1. 檔案物件的 method
- 7.2.2. 使用
json
儲存結構化資料 - 8. 錯誤和例外 - 8.1. 語法錯誤 (Syntax Error) - 8.2. 例外 (Exception) - 8.3. 處理例外 - 8.4. 引發例外 - 8.5. 例外鏈接 (Exception Chaining) - 8.6. 使用者自定的例外 - 8.7. 定義清理動作 - 8.8. 預定義的清理動作
- 9. Class(類別) - 9.1. 關於名稱與物件的一段話 - 9.2. Python 作用域 (Scope) 及命名空間 (Namespace) - 9.2.1. 作用域和命名空間的範例 - 9.3. 初見 class - 9.3.1. Class definition(類別定義)語法 - 9.3.2. Class 物件 - 9.3.3. 實例物件 - 9.3.4. Method 物件 - 9.3.5. Class 及實例變數 - 9.4. 隨意的備註 - 9.5. 繼承 (Inheritance) - 9.5.1. 多重繼承 - 9.6. 私有變數 - 9.7. 補充說明 - 9.8. 疊代器 (Iterator) - 9.9. 產生器 (Generator) - 9.10. 產生器運算式
- 10. Python 標準函式庫概覽 - 10.1. 作業系統介面 - 10.2. 檔案之萬用字元 (File Wildcards) - 10.3. 命令列引數 - 10.4. 錯誤輸出重新導向與程式終止 - 10.5. 字串樣式比對 - 10.6. 數學相關 - 10.7. 網路存取 - 10.8. 日期與時間 - 10.9. 資料壓縮 - 10.10. 效能量測 - 10.11. 品質控管 - 10.12. 標準模組庫
- 11. Python 標準函式庫概覽——第二部份 - 11.1. 輸出格式化 (Output Formatting) - 11.2. 模板化 (Templating) - 11.3. 二進制資料記錄編排 (Binary Data Record Layouts) - 11.4. 多執行緒 (Multi-threading) - 11.5. 日誌記錄 (Logging) - 11.6. 弱引用 (Weak References) - 11.7. 使用於 List 的工具 - 11.8. 十進制 (Decimal) 浮點數運算
- 12. 虛擬環境與套件 - 12.1. 簡介 - 12.2. 建立虛擬環境 - 12.3. 用 pip 管理套件
- 13. 現在可以來學習些什麼?
- 14. 互動式輸入編輯和歷史記錄替換 - 14.1. Tab 鍵自動完成 (Tab Completion) 和歷史記錄編輯 (History Editing) - 14.2. 互動式直譯器的替代方案
- 15. 浮點數運算:問題與限制 - 15.1. 表示法誤差 (Representation Error)
- 16. 附錄 - 16.1. 互動模式 - 16.1.1. 錯誤處理 - 16.1.2. 可執行的 Python 腳本 - 16.1.3. 互動式啟動檔案 - 16.1.4. 客製化模組
指令集格式規範¶
資料輸入寬度¶
採用EPE8規範,限制資料進入寬度為80字元,包含了未來使用UTF-32,因此保留平行輸入 Bits 解碼器。
縮排¶
採用 EPE8 規範,規定縮排使用4字元的空白組成,且不得使用Tab鍵。
變數名稱使用¶
同與Python一樣是大小寫區分。