導航:首頁 > 源碼編譯 > 程序為什麼要編譯成目標模塊

程序為什麼要編譯成目標模塊

發布時間:2023-06-14 09:09:03

1. 編譯程序的作用是() A把源程序譯成目標程序 B解釋並執行程序C目標程序譯成源程序D隊員程序進行編譯

答案應該選擇A
首先,需要將你的代碼文件.cpp .h .c .java等文件編譯成相應的目標程序,也就是.o .class文件
這就是編譯過程。

C語言然後會執行鏈接link操作,將生成.o生成.dll 或者.exe文件等
這是鏈接

然後雙擊exe文件,這是程序的執行過程。你說的B中執行程序應該是這個過程。跟編譯差了好遠呢

Java直接通過JVM 對class文件進行解釋,就能夠直接執行

2. 內存管理的基本問題

內存管理
操作系統對內存的劃分和動態分配,就是內存管理的概念。有效的內存管理在多道程序設計中非常重要,不僅方便用戶使用存儲器、提高內存利用率,還可以通過虛擬技術從邏輯上擴充存儲器。內存管理的功能有:

內存空間的分配與回收
地址轉換:在多道程序環境下,程序中的邏輯地址與內存中的物理地址不可能一致,因此存儲管理必須提供地址變換功能,把邏輯地址轉換成相應的物理地址。
內存空間的擴充:利用虛擬存儲技術或自動覆蓋技術,從邏輯上擴充內存。
存儲保護:保證各道作業在各自的存儲空間內運行,互不幹擾。
程序裝入和鏈接
創建進程首先要將程序和數據裝入內存。將用戶源程序變為可在內存中執行的程序,通常需要以下幾個步驟:

編譯:由編譯程序將用戶源代碼編譯成若干個目標模塊。
鏈接:由鏈接程序將編譯後形成的一組目標模塊,以及所需庫函數鏈接在一起,形成一個完整的裝入模塊。
裝入:由裝入程序將裝入模塊裝入內存運行。

程序的鏈接有以下三種方式:

靜態鏈接:在程序運行之前,先將各目標模塊及它們所需的庫函數鏈接成一個完整的可執行程序,以後不再拆開。
裝入時動態鏈接:將用戶源程序編譯後所得到的一組目標模塊,在裝入內存時,釆用邊裝入邊鏈接的鏈接方式。
運行時動態鏈接:對某些目標模塊的鏈接,是在程序執行中需要該目標模塊時,才對它進行的鏈接。其優點是便於修改和更新,便於實現對目標模塊的共享。
模塊在裝入內存時,同樣有以下三種方式:

絕對裝入。在編譯時,如果知道程序將駐留在內存的某個位置,編譯程序將產生絕對地址的目標代碼。絕對裝入程序按照裝入模塊中的地址,將程序和數據裝入內存。由於程序中的邏輯地址與實際內存地址完全相同,故不需對程序和數據的地址進行修改。
可重定位裝入。在多道程序環境下,多個目標模塊的起始地址通常都是從0開始,程序中的其他地址都是相對於起始地址的,此時應釆用可重定位裝入方式。根據內存的當前情況,將裝入模塊裝入到內存的適當位置。裝入時對目標程序中指令和數據的修改過程稱為重定位,地址變換通常是在裝入時一次完成的,所以又稱為靜態重定位。靜態重定位的特點是在一個作業裝入內存時,必須分配其要求的全部內存空間,如果沒有足夠的內存,就不能裝入該作業。此外,作業一旦進入內存後,在整個運行期間不能在內存中移動,也不能再申請內存空間。
動態運行時裝入,也稱為動態重定位,程序在內存中如果發生移動,就需要釆用動態的裝入方式。裝入程序在把裝入模塊裝入內存後,並不立即把裝入模塊中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程序真正要執行時才進行。因此,裝入內存後的所有地址均為相對地址,這種方式需要一個重定位寄存器的支持。動態重定位的特點是可以將程序分配到不連續的存儲區中;在程序運行之前可以只裝入它的部分代碼即可投入運行,然後在程序運行期間,根據需要動態申請分配內存;便於程序段的共享,可以向用戶提供一個比存儲空間大得多的地址空間。

3. 為什麼要對源程序進行編譯處理

要不計算機不知道你寫的是什麼,計算機只認識二進制,而源程序是給編程人員看的。所以你要想讓計算機認識你寫的是什麼,就必須進行編譯處理。

4. java源代碼為什麼要編譯

你現在電腦里的文件是文檔文件確切的說在計算機里也是0和1的序列 但是他和執行程序不是一

個類型的文件 文件是由類型的比如說mp3 是播放聲音的 MP4是播放視屏的 TXT是文檔文件

就是存儲文檔的 在回到問題

.java文件其實就和TXT文件一樣是文檔文件是用來存儲你寫的代碼的

他是拿來給你人看的

你要想讓他變成其可執行程序的文件你就得通過編譯器編譯它

編譯器是按照你寫的代碼把他們翻譯成可執行文件的編碼方式

然後你就可以運行它了

在計算機看來所有的文件都是0和1的組合 應為文件的類型的不同它會用不同的方式解讀它們

具體的java程序。編譯。運行等等環節怎麼完成怎麼解釋 你得慢慢了解 或者有時間我在給你解釋解釋

寫的比較亂 你湊合著看吧

閱讀全文

與程序為什麼要編譯成目標模塊相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163