㈠ 編譯是什麼意思
問題一:編譯和解釋的區別是什麼? 後來為了方便記憶,就將用0、1序列表示的機器指令都用符號助記,這些與機器指令一一對應的助記符就成了匯編指令,從而誕生了匯編語言。無論是機器指令還是匯編指令都是面向機器的,統稱為低級語言。因為是針對特定機器的機器指令的助記符,所以匯編語言是無法獨立於機器(特定的CPU體系結構)的。但匯編語言也是要經過翻譯成機器指令才能執行的,所以也有將運行在一種機器上的匯編語言翻譯成運行在另一種機器上的機器指令的方法,那就是交叉匯編技術。高級語言是從人類的邏輯思維角度出發的計算機語言,抽象程度大大提高,需要經過編譯成特定機器上的目標代碼才能執行,一條高級語言逗遲的語句往往需要若干條機器指令來完成。高級語言獨立於機器的特性是靠編譯器為不同機器生成不同的目標代碼(或機器指令)來實現的。那具體的說,要將高級語言編譯到什麼程度呢,這又跟編譯的技術有關了,既可以編譯成直接可執行的目標代碼,也可以編譯成一種中間表示,然後拿到不同的機器和系統上去執行,這種情況通常又需要支撐環境,比如解釋器或虛擬機的支持,Java程序編譯成bytecode,再由不同平台上的虛擬機執行就是很好的例子。所以,說高級語言不依賴於機器,是指在不同的機器或平台上高級語言的程序本身不變,而通過編譯器編譯得到的目標代碼去適應不同的機器。從這個意義上來說,通過交叉匯編,一些匯消鍵編程序也可以獲得不同機器之間的可移植性,但這種途徑獲得的移植性遠遠不如高級語言來的方便和實用性大。二、編譯與解釋編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。解釋具有良好的動態特性和可移植性,比如在解釋執行時可以動態改變變數的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統上,則程序不用改動就可以在移植了解釋器的系統上運行。同時解釋器山橋李也有很大的缺點,比如執行效率低,佔用空間大,因為不僅要給用戶程序分配空間,解釋器本身也佔用了寶貴的系統資源。編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.1、編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM),如:LX.ASM; 2、匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM; 3、連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ; 4、執行:如果結果在屏幕在顯示,則直接執行可執行文件。 5、調試:用調試程序(DEBUG.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE1. 在具體計算機上實現一種語言,首先要確定的是表示該語言語義解釋的虛擬計算機,一個關鍵的問題是程序執行時的基本表示是實際計算機上的機器語言還是虛擬機的機器語言。這個問題決定了語言的實現。根據這個問題的回答,可以將程序設計語言劃分為兩大類:編譯型語言和解釋型語言。2. 由編譯型語言編寫的源程序需要經過編譯、匯編和鏈接才能輸出目標代碼,然後機器執行目標代碼,得出運行結果,目標代碼由機器指令組成,一般不能獨立運行,因為源程序中可能使用了某些......>>
問題二:函數的編譯是什麼意思??? 你說的這個問題,是把(不僅僅是數學上的函數式子)某個項目內容,進行編程。也就通過設計好了的運算程序,上百上千次進行與或非門運算。你想,電子,也就是通電斷電額事。寫成數字,就是010100001110000000111101111等等。
這需要專門的【編程員】大費腦筋的。有時候,需要好幾年。
問題三:編譯程序是什麼意思?編譯是什麼意思? 把用高級程序設計語言書寫的源程序,翻譯成等價的計算機匯編語言或機器語言書寫的目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。
問題四:編譯時間是什麼意思? 在ROM發布的時候,會提供這個ROM的一些版本。
編譯時間能夠告訴用戶這個系統的發布時間。
有一些軟體會提供類似的編譯Revision。功能基本上相同。
問題五:編譯錯誤是什麼意思 編譯錯誤,一般指語法上的錯誤
運行錯誤,一般指程序上的bug
問題六:什麼是編譯原理 編譯:就是將程序語言進行翻譯,生成可供用戶直接執行的二進制代碼,即可執行文件。
任務是個比較模糊的概念,指的是操作系統中正在進行的工作,既可以指進程,也可以指程序。
程序指的是可以連續執行,並能夠完成一定任務的一條條指令的 *** 。
進程是程序在一個數據 *** 上運行的過程,它是傳統操作系統進行資源分配和調度的一個獨立單位。
線程是一個指令執行序列,是操作系統調度的最小單位。一個或多個線程構成進程,構成一個進激的線程之間共享資源。進程和線程之間的最大區別就是線程不能獨立擁有資源,進程擁有自己的資源。
問題七:編譯原理中V*是什麼意思 V是一個符號 *** ,假設V指的是三個符號a, b, c的 *** ,記為 V = {a, b, c }
V* 讀作「V的閉包」,它的數學定義是V自身的任意多次自身連接(乘法)運算的積,也是一個 *** 。
也就是說,用V中的任意符號進行意多次(包括0次)連接,得到的符號串,都是V*這個 *** 中的元素。
0次連接的結果是不含任何符號的空串,記為 ε
1次連接就是只有一個符號的符號串,比如,a,b, c
2次連接是兩個符號構成的符號串,比如,aa, ab, ac, ba, bb, bc,等等
……
n次連接是一個長度為n、由a、b、c三個符號構成的符號串,比如abaacbbac……
因此,V*包含一切由a,b,c三個符號連接而成的、任意長度的符號串(以及空串ε)
問題八:編譯和預編譯有什麼區別。 60分 預編譯又稱為預處理,是做些代碼文本的替換工作。
處理#開頭的指令,比如拷貝#include包含的文件代碼,#define宏定義的替換,條件編譯等
就是為編譯做的預備工作的階段
主要處理#開始的預編譯指令
編譯(pilation , pile) 1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。 2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
問題九:C語言中程序編譯的正確理解及其含義 預處理。首先程序會被送給預處理器了。預處理器執行以#開頭的命令(通常稱為指令)。預處理器有點類似於編輯器,它可以給程序添加內容,也可以對程序進行修改。
編譯。 修改後的程序現在可以進入編譯器了。編譯器會把程序編譯成機器指令(即目標代碼)。然而,這樣的程序是不可運行的。
鏈接。 在最後步驟中,鏈接器把編譯器產生的目標代碼和所需的其他附加代碼整合在一起,這樣才最終產生完全可執行的程序。這些附加代碼包括程序中用到的庫函數(如printf函數)
問題十:編譯和解釋的區別是什麼? 後來為了方便記憶,就將用0、1序列表示的機器指令都用符號助記,這些與機器指令一一對應的助記符就成了匯編指令,從而誕生了匯編語言。無論是機器指令還是匯編指令都是面向機器的,統稱為低級語言。因為是針對特定機器的機器指令的助記符,所以匯編語言是無法獨立於機器(特定的CPU體系結構)的。但匯編語言也是要經過翻譯成機器指令才能執行的,所以也有將運行在一種機器上的匯編語言翻譯成運行在另一種機器上的機器指令的方法,那就是交叉匯編技術。高級語言是從人類的邏輯思維角度出發的計算機語言,抽象程度大大提高,需要經過編譯成特定機器上的目標代碼才能執行,一條高級語言的語句往往需要若干條機器指令來完成。高級語言獨立於機器的特性是靠編譯器為不同機器生成不同的目標代碼(或機器指令)來實現的。那具體的說,要將高級語言編譯到什麼程度呢,這又跟編譯的技術有關了,既可以編譯成直接可執行的目標代碼,也可以編譯成一種中間表示,然後拿到不同的機器和系統上去執行,這種情況通常又需要支撐環境,比如解釋器或虛擬機的支持,Java程序編譯成bytecode,再由不同平台上的虛擬機執行就是很好的例子。所以,說高級語言不依賴於機器,是指在不同的機器或平台上高級語言的程序本身不變,而通過編譯器編譯得到的目標代碼去適應不同的機器。從這個意義上來說,通過交叉匯編,一些匯編程序也可以獲得不同機器之間的可移植性,但這種途徑獲得的移植性遠遠不如高級語言來的方便和實用性大。二、編譯與解釋編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。解釋具有良好的動態特性和可移植性,比如在解釋執行時可以動態改變變數的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統上,則程序不用改動就可以在移植了解釋器的系統上運行。同時解釋器也有很大的缺點,比如執行效率低,佔用空間大,因為不僅要給用戶程序分配空間,解釋器本身也佔用了寶貴的系統資源。編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.1、編輯:用編輯軟體(EDIT.EXE或記事本)形成源程序(.ASM),如:LX.ASM; 2、匯編:用匯編程序(MASM.EXE)對源程序進行匯編,形成目標文件(.OBJ),格式如下:MASM LX.ASM; 3、連接:用連接程序(LINK.EXE)對目標程序進行連接,形成可執行文件(.EXE),格式如下:LINK LX.OBJ; 4、執行:如果結果在屏幕在顯示,則直接執行可執行文件。 5、調試:用調試程序(DEBUG.EXE)對可執行文件進行調試,格式如下:DEBUG LX.EXE1. 在具體計算機上實現一種語言,首先要確定的是表示該語言語義解釋的虛擬計算機,一個關鍵的問題是程序執行時的基本表示是實際計算機上的機器語言還是虛擬機的機器語言。這個問題決定了語言的實現。根據這個問題的回答,可以將程序設計語言劃分為兩大類:編譯型語言和解釋型語言。2. 由編譯型語言編寫的源程序需要經過編譯、匯編和鏈接才能輸出目標代碼,然後機器執行目標代碼,得出運行結果,目標代碼由機器指令組成,一般不能獨立運行,因為源程序中可能使用了某些......>>
㈡ #if #endif 是什麼意思啊
#ifdef #endif是C語言的條件編譯。
條件編譯是根據實際定義宏(某類條件)進行代碼靜態編譯的手段。可根據表達式的值或某個特定宏是否被定義來確定編譯條件。
如下面的例子:
#ifdef 標志符
程序段1
#else
程序段2
#endif
當定義了標志符則對程序段1進行編譯,而沒有定義標志符時則編譯程序段2。
(2)預編譯中的或運算含義擴展閱讀
條件編譯的作用
條件編譯跟事物具有多樣性一樣。我們需要對不同的狀況下採取不同的操作。例如程序的運行平台具有這種多樣性,我們在window平台下編寫的程序,可能使用某一個庫或者與硬體相關的屬性、方法。
現在要將我們的程序移植到別的計算機系統的時候,例如Linux系統。那麼程序上依賴的庫或者有些和硬體相關聯的屬性和方法不得不更改,那麼我們只能在編寫程序的時候提高程序的健壯性,此時就需要條件編譯語句為我們實現這樣的功能。
㈢ 請教C語言中if語句和預編譯#if語句的區別以及#if 0的意思
您好,
在c語言的
if
判斷語句中
(舉例給您說吧)
n==5
表示:判斷n與5的值是否相等,相當於數學中的等於號("="),如果想等則判斷語句為真,執行語句中的代碼。若不相等則跳出
if
語句.
n%5==0
中"%"表示"取余"運算。(a
%
b
就是計算
a
除以
b
得出的余數。)
if(n%5==0
)則表示:判斷n是否是5的整數倍,如果是,則余數為0,0==0,為真。故執行if
語句中的代碼。若n不是5的倍數,假設為1,1==0,為假。則跳出if語句