程式被其他程式翻譯成不同的格式

2021-06-01 17:49:45 字數 903 閱讀 4255

在hello程式生命週期的一開始時是乙個高階c程式,因為當處於這種形式時,它是能夠被人讀懂的。然而,為了在系統上執行hello.c程式,每條c語句都必須被其他程式轉化為一系列的低階機器語言指令。然後這些指令按照一種稱為可執行目標程式(executable object program)的格式打好包,並以二進位制磁碟檔案的形式存放起來。目標程式也稱為可執行目標檔案(executable object file)。

預處理階段:預處理器(cpp)根據以字元#開頭的命令(directives),修改原始的c程式。比如hello.c中第一行的#include 指令告訴預處理器讀取系統檔案stdio.h的內容,並把它直接插入到程式文字中去。結果就得到了另乙個c程式,通常是以.i作為副檔名。

編譯階段:編譯器(ccl)將文字檔案hello.i翻譯成文字檔案hello.s,它包含乙個組合語言程式。組合語言程式中的每條語句都以一種標準的文字格式確切地描述了一條低階機器語言指令。組合語言是非常有用的,因為它為不同高階語言的不同編譯器提供了通用的輸出語言。例如,c編譯器和fortran編譯器產生的輸出檔案用的都是一樣的組合語言。

彙編階段:接下來,彙編器(as)將hello.s翻譯成及其語言指令,把這些指令打包稱為一種叫做可重定位(relocatable)目標程式的格式,並將結果儲存在目標檔案hello.o中。hello.o檔案是乙個二進位制檔案,它的位元組編碼是機器語言指令而不是字元。如果我們在文字編輯器中開啟hello.o檔案,呈現的將是一對亂碼。

鏈結階段:請注意,我們hello程式呼叫printf函式,它是標準c庫中的乙個函式,每個c編譯器都提供。printf函式存在於乙個名為printf.o的單獨的預編譯目標檔案中,而這個檔案必須以某種方式併入到我們的hello.o程式中。鏈結器(id)就負責處理這種併入,結果就得到hello檔案,他是乙個可執行目標檔案(或者簡稱為可執行檔案)。可執行檔案載入到儲存後,有系統負責執行。

整數翻譯成英文

程式效果 1 include2 include 3using namespace std 45 class robot 11void out int a 英文中每三位數讀法相同,所以定義out函式翻譯小於1000的整數 12void tran int int n 將1 1999999999的整數翻譯...

整數翻譯成英文

程式效果 英文中每三位數讀法相同,所以定義out函式翻譯小於1000的整數 12void tran int int n 將1 1999999999的整數翻譯成英文句子 13 robot 15 1617 定義兩個全域性字元指標陣列,訪問所需的單詞num1為1 19 18static const cha...

求C翻譯成c

typedef struct filters define pi m pi define ln n m ln2 const double fs 48000.0 dsp的取樣頻率 48khz filters filter 定義乙個濾波 公共變數計算 void common variables filt...