編譯原理 編譯程式基礎知識

2021-08-17 04:49:14 字數 820 閱讀 2878

本文主要講的什麼是編譯程式,編譯的各個階段

源語言是像fortran、pascal或c那樣的高階語言,目標語言是像組合語言或機器語言那樣的低階語言,這種翻譯程式就叫做編譯程式

翻譯程式:就是把一種語言(稱為源語言)書寫的程式翻譯成另外一種語言(稱為目標語言)的等價程式。

預處理:乙個源程式可能分成幾個模組放在不同的檔案裡,將這些源程式匯集在一起的任務,由乙個叫預處理程式的程式來完成,有些預處理程式也負責巨集展開、檔案合併等任務

任務:從左到右乙個字元乙個字元地讀入源程式,對構成源程式的字元流進行掃瞄和分解,從而識別出乙個個單詞。

任務:在詞法分析的基礎上將單詞序列分解成各類語法短語,如「程式、語句、表示式」等;這種語法短語也稱為短語單位,可表示成語法樹。

例如: id1 := id2 + id3 * 10;

所謂中間** 是一種結構簡單、含義明確的記號系統,這種記號系統可以設計成多種多樣的形式。

設計的原則:一是容易生成; 二是:容易將他翻譯成目標**。

任務:對前一階段產生的中間**進行變換或進行改造,目的是使生成的目標**更為高效,即節省時間和省空間。

任務:把中間**變換成特定的機器上的絕對指令**或可重定位的指令**活彙編指令**。它的工作與硬體系統結構和指令含義有關。

GCC編譯程式

gcc gnu compiler collection 是linux下最主要的一種編譯工具。gcc編譯格式 gcc 選項 源檔名 選項 目標檔名 採用預設得方式編譯原始檔,系統會生成a.out可執行檔案 採用顯式編譯成目標檔案,在編譯成可執行檔案 gcc c hello.c 生成hello.o gc...

編譯基礎知識

cpp生成可執行程式 g test.cpp o test 靜態庫gcc c cjson.c ar rcs libcjson.a cjson.o 動態庫gcc c o cjson.o fpic cjson.c gcc shared o libcjson.so cjson.o 或直接連寫 gcc sha...

編譯過程和編譯程式筆記

圖 1.3 編譯的各個階段 詞法分析 從左到右乙個乙個字元地讀入源程式,對構成源程式的字元進行掃瞄和分解,從而識別出乙個個單詞。語法分析 在詞法分析的基礎上將單詞序列分解成各類語法短語,這些語法短語也稱為語法單位,可以表示成語法樹。語法分析依據的是語言的語法規則,即描述程式結構的規則 例如 id1 ...