當前位置:首頁 » 編程軟體 » 程序調用是指對程序進行編譯

程序調用是指對程序進行編譯

發布時間: 2022-07-25 17:19:43

編譯程序是什麼意思編譯是什麼意思

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。

(1)程序調用是指對程序進行編譯擴展閱讀:

結構:

編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。

編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。

可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。

㈡ 編譯程序和解釋程序都是什麼意思

1、編譯程序是把用高級程序設計語言或計算機匯編語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序,屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

2、解釋程序是高級語言翻譯程序的一種,它將源語言書寫的源程序作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程序。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文本。

(2)程序調用是指對程序進行編譯擴展閱讀:

編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

㈢ 什麼是程序調試

所謂程序調試,是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程。這是保證計算機信息系統正確性的必不可少的步驟。編完計算機程序,必須送入計算機中測試。
程序調試分以下,幾步進行:
第一步,用編輯程序把編制的源程序按照一定的書寫格式送到計算機中,編輯程序會根據使用人員的意圖對源程序進行增、刪或修改。
第二步,把送入的源程序翻譯成機器語言,即用編譯程序對源程序進行語法檢查並將符合語法規則的源程序語句翻譯成計算機能識別的「語言」。如果經編譯程序檢查,發現有語法錯誤,那就必須用編輯程序來修改源程序中的語法錯誤,然後再編譯,直至沒有語法錯誤為止。
第三步,使用計算機中的連接程序,把翻譯好的計算機語言程序連接起來,並扶植成一個計算機能真正運行的程序。在連接過程中,一般不會出現連接錯誤,如果出現了連接錯誤,說明源程序中存在子程序的調用混亂或參數傳遞錯誤等問題。這時又要用編輯程序對源程序進行修改,再進行編譯和連接,如此反復進行,直至沒有連接錯誤為止。
第四步,將修改後的程序進行試算,這時可以假設幾個模擬數據去試運行,並把輸出結果與手工處理的正確結果相比較。如有差異,就表明計算機的程序存在有邏輯錯誤。如果程序不大,可以用人工方法去模擬計算機對源程序的這幾個數據進行修改處理;如果程序比較大,人工模擬顯然行不通,這時只能將計算機設置成單步執行的方式,一步步跟蹤程序的運行。一旦找到問題所在,仍然要用編輯程序來修改源程序,接著仍要編譯、連接和執行,直至無邏輯錯誤為止。

㈣ 什麼是系統調用,與程序調用有何不同

所謂系統調用,就是內核提供的、功能十分強大的一系列的函數。這些系統調用是在內核中實現的,再通過一定的方式把系統調用給用戶,一般都通過門(gate)陷入(trap)實現。系統調用是用戶程序和內核交互的介面。

整個系統調用的過程可以總結如下:

1. 執行用戶程序(如:fork)
2. 根據glibc中的函數實現,取得系統調用號並執行int $0x80產生中斷。
3. 進行地址空間的轉換和堆棧的切換,執行SAVE_ALL。(進行內核模式)
4. 進行中斷處理,根據系統調用表調用內核函數。
5. 執行內核函數。
6. 執行RESTORE_ALL並返回用戶模式
下庫函數和系統調用的區別:

人們在長期編程中發現使用系統調用有個重大的缺點,那就程序的移植性,比如說:linux系統提供的系統調用的函數和windows就不一樣,2者不單單是實現的方式不同,提供給用戶的函數名,參數都不同,這個可以理解。因此一個實現好的程序,利用了linux的系統調用譬如說wait4函數,那麼他在windows上編譯是通不過的。於是人們想了個辦法,就是封裝了windows和linux系統調用,給大家一個統一的函數(我習慣叫它介面),那麼這樣程序的移植性問題就解決了。

所以可以這么認為庫函數是對系統調用的封裝(不是所有的庫函數都是),為的是解決一些公共的問題和提供統一的系統調用的介面,他和系統調用的優缺點就是:系統調用速度是明顯要快於庫函數(並不一定全部是,但絕大部分是),但系統調用缺乏移植性。庫函數速度要慢,但解決了移植問題。這些在開發過程中要根據自己的實際情況來決定使用那一個

㈤ 怎麼樣在java程序中調用c/c++編譯器進行c/c++的編譯

可以調用的,java有一種技術叫JNI,就是為了調用C/C++,至於例子嘛是這樣的: 01. public class testdll 02. { 03. static 04. { 05. System.loadLibrary("goodluck"); 06. } 07. public native static int get(); 08. 09. public native static void set(int i); 10. public static void main(String args) 11. { 12. testdll test = new testdll(); 13. test.set(10); 14. System.out.println(test.get()); 15. } 16. 17. } 用javac testdll.java編譯它,會生成testdll.class。 再用javah testdll,則會在當前目錄下生成testdll.h文件,這個文件需要被C/C++程序調用來生成所需的庫文件。 二、C/C++中所需要做的工作 對於已生成的.h頭文件,C/C++所需要做的,就是把它的各個方法具體的實現。然後編譯連接成庫文件即可。再把庫文件拷貝到JAVA程序的路徑下面,就可以用JAVA調用C/C++所實現的功能了。 好,下面我們用testdll.cpp文件具體實現這兩個函數: 01. #include "testdll.h" 02. int i = 0; 03. JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass) 04. { 05. return i; 06. } 07. JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j) 08. { 09. i = j; 10. } 編譯連接成庫文件,本例是在WINDOWS下做的,生成的是DLL文件。並且名稱要與JAVA中需要調用的一致,這里就是goodluck.dll http://ask.wangmeng.cn/question/88

㈥ 下面是關於解釋程序和編譯程序的敘述,正確的是()

C、D

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序並不產生目標程序,這是它和編譯程序的主要區別。

解釋程序它逐條地取出源程序中的語句,邊解釋,邊執行。編譯的話就是只要編譯一次,下次再執行就不用再解釋了。

(6)程序調用是指對程序進行編譯擴展閱讀:

解釋程序的工作方式非常適於人通過終端設備與計算機會話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令並提交硬體立即執行且將執行結果反映到終端,從終端把命令打入後,就能立即得到計算結果。

這的確是很方便的,很適合於一些小型機的計算問題。但解釋程序執行速度很慢,例如源程序中出現循環,則解釋程序也重復地解釋並提交執行這一組語句,這就造成很大浪費。

對源程序邊解釋翻譯成機器代碼邊執行的高級語言程序。所以,解釋程序的功能是:解釋執行高級語言程序。由於它的方便性和交互性較好,早期一些高級語言採用這種方式,如BASIC、dBASE。但它的弱點是運行效率低,程序的運行依賴於開發環境,不能直接在操作系統下運行。

網路-解釋程序

c語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

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

2、編譯:將源程序轉換為目標文件(Obj文件)。

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

4、運行:執行,獲取運行結果的EXE文件。

(7)程序調用是指對程序進行編譯擴展閱讀:

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

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

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

㈧ 為什麼要對C源程序進行編譯、鏈接

C++程序從編譯到鏈接然後再到調用的整個過程如下。
只是個人最近觀點,希望能與志同道合的同學一起討論。

註:這里只是研究C++的主流編譯過程,與Java沒有任何關系,因為使用的技術完全不一樣(Java是編譯和解釋結合的語言)。並且由於不同的編譯器廠商對於程序的編譯過程不盡相同,但是主要流程還是一樣的。

其實長久以來我就一直很不清楚obj文件的內容到底是什麼,有人說是匯編,有人說是機器語言。如果是機器語言的話,那編譯的過程是怎樣加入操作系統信息的呢?因為這個問題的不斷擴展和困擾,便決定徹底研究一下,網上幾乎找不到相關資料,作者參照了基本系統編程的書籍後自行整理而來,數目見底,僅供參考,歡迎討論。

㈨ c編譯程序是什麼

c編譯程序是將c語言程序編譯成目標代碼程序的程序,即正確答案應該選擇D。

1、c語言是目前世界上最流行、使用最廣泛的面向過程的高級程序設計語言。 c語言對操作系統和系統使用程序以及需要對硬體進行操作的場合,用c語言明顯優於其它高級語言,許多大型應用軟體都是用c語言編寫的。

2、編譯就是利用編譯程序從源語言編寫的源程序產生目標程序的過程,其中的五個階段分別是詞法分析、語法分析、語義檢查和中間代碼生成、代碼優化、目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。

(9)程序調用是指對程序進行編譯擴展閱讀

c編譯程序的語言特點

對於c編譯程序來說,其語言的特點如下:

1、c語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護,而且表現能力和處理能力極強。

2、c語言具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。

3、由於c語言實現了對硬體的編程操作,因此集高級語言和低級語言的功能於一體。它既可用於系統軟體的開發,也適合於應用軟體的開發。

4、此外,c語言還具有效率高、可移植性強等特點。因此它廣泛地移植到了各類各型計算機上,從而形成了多種版本。

㈩ 請問「源程序的編譯」與「源程序的解釋」的基本概念是什麼如題 謝謝了

源程序的編譯是指對於程序源代碼的編譯過程,由編譯器完成,適用於編譯語言,編譯的過程會生成相應的程序的機器碼。 源程序的解釋是指對於程序源代碼的解釋的過程,由解釋器完成,適用於解釋語言。 解釋語言和編譯語言的區別在於解釋語言編寫的程序在每次運行時都需要通過解釋器對程序進行動態解釋和執行;解釋語言編寫的程序有時被稱為腳本,一般是讀者可以直接閱讀的代碼。解釋器通過讀取腳本,對它解釋,然後執行腳本中的命令。 例如:我們通常使用的DOS命令行命令執行環境本身就是一個解釋器。讀入鍵入:「dir」命令並回車,解釋器接收並翻譯這條命令,然後進行系統調用來完成命令的運行,並把結果顯示出來。相應的.bat批處理文件可以說就是一種腳本。 編譯語言需要通過編譯器,將所編寫的程序翻譯成計算機的機器語言。完成編譯後的程序無需其他程序,自己可獨立運行。因為編譯後的程序是由機器語言指令構成的,所以通常它的運行速度很快。但是使用不同硬體平台的計算機,它們的機器語言也是截然不同的,這同樣使得編譯過的程序不能順利地從一個計算機平台往另外一個平台上移植。所以,在不同的平台之間,往往需要重新編譯甚至重寫程序。解釋性程序沒有這個限制。一般情況下,只要有相應版本的語言解釋器,腳本程序就可以幾乎不做任何修改地移植到其他平台上去。

熱點內容
matlab稀疏矩陣存儲 發布:2025-02-06 03:07:54 瀏覽:838
國際服2b2t伺服器地址 發布:2025-02-06 03:06:28 瀏覽:390
c語言輸出b 發布:2025-02-06 03:06:27 瀏覽:31
普通火車wifi密碼多少 發布:2025-02-06 03:04:20 瀏覽:436
可編程監控 發布:2025-02-06 03:03:33 瀏覽:645
c語言取隨機數 發布:2025-02-06 02:46:57 瀏覽:863
uc緩存的視頻卡住 發布:2025-02-06 02:17:05 瀏覽:144
解壓同學介紹 發布:2025-02-06 02:13:10 瀏覽:776
icsftp 發布:2025-02-06 02:12:59 瀏覽:325
ftp跨域上傳文件 發布:2025-02-06 02:09:22 瀏覽:822