當前位置:首頁 » 編程軟體 » 自製c編譯器製作教程

自製c編譯器製作教程

發布時間: 2022-12-08 01:09:10

A. 怎樣去寫一個編譯器(用c語言寫C語言編譯器),需要哪些知識做鋪墊,可以給一下相關網站和書籍的推薦嗎

寫編譯器重點就是設計並實現一些數據結構和演算法,語言特點太多的話,代碼寫起來不容易,建議你找一個小語言嘗試下,不要一開始就去嘗試成熟語言。否則你會在寫完語法分析程序以後,遭遇到很大的困難。多數人都是在寫語義分析程序的時候,突然發現自己設計的數據結構很爛,後邊越寫越要命。
如果你想入門編譯器的話,那麼可以看《編譯原理與實踐》,整本書先將編譯器理論,然後後邊教你一步步實現c-miuns(c的子集)的編譯器,包括lex,yacc,都在幾千行代碼左右。這本書講的比較簡單易懂一點
也可以學學斯坦福大學的編譯器設計公開課(aiken設計了一個叫cool的語言,專門用來教人寫編譯器),課程地址上面有人給了:Compilers。這門課以前有個實驗環境(據說已經給了,我以前寫的時候還是用的網上一個不完整的實驗環境),把和編譯器知識無關的內容都給你寫好了,你只需要在固定的地方填上你的內容就可以寫出你的編譯器(不要覺得很簡單哦,人家的代碼寫的很精巧的,讀完就發現寫個好編譯器還是很費腦子的),另外,這個實驗環境有個特點,就是在每一步都提供標准程序做對比,你可以在寫完一部分以後就同標准程序對比,及時發現錯誤。這種方式為寫編譯器又提供了很多幫助
先找個小的,慢慢研究,弄懂了整體的結構再說

B. 自己寫編譯器怎麼寫,我想為中國程序員做個編譯C語言的編譯器。

首先做這個東西的意義並不大,如果是想學習的話,看看這本書Modern Compiler by Andrew W. Appel

C. 開發一個c語言程序要經過哪四個步驟

開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。

C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。

1、預處理:輸入源程序並保存(.C文件)。

2、編譯:將源程序翻譯為目標文件(.OBJ文件)。

3、鏈接:將目標文件生成可執行文件( .EXE文件)。

4、運行:執行.EXE文件,得到運行結果。

(3)自製c編譯器製作教程擴展閱讀:

C語言代碼變為程序的幾個階段:

1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。

2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。

3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。

4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。

參考資料來源:網路-c語言

D. 想做一個簡單的C編譯器要如何下手

再簡單的編譯也不簡單,你能做的一般是把C語言轉換為匯編語言,然後讓機器匯編成機器代碼。如果你想像TURBO C那樣自己生產機器代碼,那是非常非常麻煩的。

C語言課程的老師不會叫你作編譯的,可能我們都理解錯他的意思了。編譯器的題目只有《編譯原理》的老師才來安排,並且如果是本科的話,恐怕一年的課程也做不出。

E. 第一個C語言編譯器是怎樣編寫的

任何一個功能
任何一個語言 都能實現
所以 關鍵的不在於語言 而在於 演算法

C語言被人設計出來
設計了它的語法和規則
然後 根據這個規則,用B語言(Ken Thompson發明的B語言,而 B語言則源自BCPL語言。) 加匯編 編寫了第一個C的編譯器
沒用多久
因為C語言更好用
於是 後續的C語言編譯器 都是C語言自己寫的了。

F. 如何用C語言的做一個簡單的編譯器

先學編譯原理。
然後根據步驟,
1 處理預編譯
2 詞法分析
3 語法分析
4 語義分析
5 中間代碼轉換
6 二進制代碼生成。
簡單起見,不需要考慮優化。 初期可以不需要支持太多語法。

G. 用C++或C寫個C的編譯器(不求代碼、說下過程)

有一門相關課程,叫「編譯原理」,大部分的編譯器主體思想都會講到,你可以找相關書籍看看。牽涉的知識不是很多但對掌握程度要求較高,因為編譯器的設計是一個很困難的工作,一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 匯編程序 (assembler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)其中每一步都有相關內容需要研究,中間的幾步也是前後相關聯,互助合作來工作的。

H. 如何用c++做一個編譯器

1、編譯器有很多種,每一種的使用方式不盡相同。常用編譯器:
Visual C++
GNU C++
Inter C++
Sun C++
clang
2、一般編譯過程:源文件→預處理→編譯→匯編→鏈接→可執行文件
下面以GCC示例:
預處理(Pre-Processing):根據預處理命令(#開頭)修改源文件
# gcc -o hello.i -E hello.c or # cpp -o hello.i hello.c
編譯(Compiling):語法檢查,並將源文件翻譯成匯編文件
# gcc -o hello.s -S hello.i or # cc1 -o hello.s hello.i
匯編(Assembling):將匯編文件轉換為目標文件(二進制)
# gcc -o hello.o -c hello.s or # as -o hello.o hello.s
鏈接(Linking):編址和符號鏈接,生成可執行文件
# gcc -o hello hello.o or # ld -o hello hello.o

熱點內容
斐波那契數列的遞歸演算法 發布:2024-05-04 14:34:55 瀏覽:968
數字支付密碼哪裡找 發布:2024-05-04 14:26:50 瀏覽:86
天翼雲免費存儲 發布:2024-05-04 14:22:55 瀏覽:782
微信56g緩存怎麼解決 發布:2024-05-04 14:09:41 瀏覽:706
sqlupdatewhereand 發布:2024-05-04 13:55:47 瀏覽:586
java視頻教程推薦 發布:2024-05-04 13:55:08 瀏覽:86
安卓官服閃耀暖暖怎麼換 發布:2024-05-04 13:46:37 瀏覽:171
我的世界精靈伺服器怎麼抓寵物 發布:2024-05-04 13:28:54 瀏覽:960
編譯androidwebkit 發布:2024-05-04 13:11:37 瀏覽:761
安卓微信流量怎麼控制 發布:2024-05-04 12:47:19 瀏覽:799