C4編譯器:一個針對C語言的編譯器,將C代碼轉換為目標機器碼,實現比較高效的執行。
C4編譯器的設計原則之一是簡單性和易用性。它采用了直觀且易於理解的設計,使開發人員能夠輕鬆地使用編譯器進行編譯和調試操作。簡單性還有助於提高代碼的可維護性和可擴展性。
- 一個C語言源碼文件
- 528行C語言代碼
- 4個函數
具備完整的詞法分析、語法分析、簡單的語義檢查、代碼生成、運行時環境(即虛擬機)。和常見的C編譯器不同的是,它把C語言源程序編譯成字節碼(bytecode),然後在一個精簡的虛擬機中解釋執行。
C4最特別的地方是,就是自己編譯自己。最初始的C4編譯器的可執行文件,還是必須要通過GCC、Clang等編譯器進行編譯生成。
- 支持char、int和指針類型。
- 支持if、while、return和表達式語句。
- 實現了自編譯的功能,並且具有一些額外的功能。
該編譯器包含以下全局變量:
p、lp
:用於跟蹤源代碼的當前位置和上一行代碼的位置。
data
:指向數據/未初始化數據段的指針。
e、le
:指向生成的機器代碼的當前位置和上一行的位置。
id
:指向當前解析的標識符。
sym
:符號表,存儲標識符。
tk
:當前的token。
ival
:當前token的值。
ty
:當前表達式的類型。
loc
:局部變量的偏移量。
line
:當前行號。
src
:打印源代碼和組合代碼的標誌。
debug
:打印執行的指令的標誌。
c4編譯器使用的tokens
和classes
按照優先級順序排列。tokens
用於表示各種標識符、運算符和關鍵字,而classes
則用於表示不同的類型。
c4編譯器提供一個簡單的框架,用於解析c語言代碼並且生成相應的機器代碼。對於初學者來說,這是一個好的工具,之前比較沒有過多的去了解編譯器,做這個筆記報告的時候查找很多資料,對編譯器也有更多的了解。
- 資料來源網址:https://kknews.cc/code/zrkmqga.html
- C4項目地址: https://github.com/rswier/c4
- chatGPT