c語言實現HACK彙編編譯器(一)

2021-07-08 12:53:05 字數 497 閱讀 5337

彙編編譯器:

匯程式設計序在被計算機執行之前,必須被翻譯成計算機的二進位制語言。翻譯任務是由彙編編譯器來完成的。彙編編譯器的輸入是一串彙編命令,然後產生一串等價的二進位制指令作為輸出。生成的**被載入到計算機的記憶體中然後被硬體執行。

所以只要任務就是要有完整的彙編語法說明文件和相應的二進位制**。主要流程如下:

¥解析出符號命令內在的域

¥對於每個域,產生機器語言中相應的位域

¥用記憶體單元的數字位址來替換所有的符號引用

¥將二進位製碼彙編成完整的機器指令

語法規約和檔案格式及符號:

見計算機系統要素第六章。

實現:

基於4個模組的彙編編譯器的實現:語法分析器(parser)模組用來對輸入檔案進行語法分析;編碼(code)模組用來提供所有彙編命令所對應的二進位制**;符號表(symbol table)模組用來處理符號。另外還有乙個主程式用來驅動整個編譯過程。

讓我們乙個個來實現吧。

組合語言 編譯器

乙個組合語言程式從寫出到最終執行的簡要過程 編寫 編譯 連線 執行 notepad 選擇assembly assume cs abc abc被我們當做 段來使用,so要把它和cs聯絡起來 abc segment 定義乙個段 abc 到ends結束 start mov ax,2 給程式乙個起始位置 a...

組合語言編譯器 提高編譯器的彙編能力

很多軟體設計者都相信他們所編寫的彙編 比編譯器所產生的 效率更高 因此他們認為用組合語言所做的專案比用高階語言所做的專案要好 對這些工程師來說 組合語言所帶來的高效比前面所討論的c語言的優點重要得多 我相信如果這些工程師把他們所編寫的彙編 和用c語言編寫的程式通過編譯後產生的 比較一下 他們肯定會非...

C 語言 編譯器

c 語言是高階程式語言,人們在使用 c 語言工作的時候不必用數字碼表示指令,大大簡化了對於計算機底層暫存器的操作,人們可以把工作的重點放在 設計和具體功能的實現,編寫出更易讀易懂的 可是計算機的工作和人類正好相反,c 語言編寫的 對於計算機而言就好比是天書且沒有意義可言,因為計算機是識別機器語言的,...