目標檔案詳細解讀(一) 格式與內容

2022-09-13 10:12:09 字數 716 閱讀 9010

我們都知道,編譯器編譯源**後生成的檔案是目標檔案,那麼,目標檔案與可執行檔案之間有什麼區別呢?其最本質的內容是什麼呢?

目標檔案的格式

實際上,目標檔案是源**編譯但未鏈結的中間檔案(windows的.obj檔案和linux的.o檔案).它與可執行檔案的內容與結構十分相似,從廣義上二者的格式幾乎一樣。windows下,我們統稱為pe-coff檔案格式,linux下統稱為elf檔案,其實,它們都是coff(common file format)的變種。

從結構上,目標檔案是編譯後的可執行檔案格式, 但未經過鏈結過程,缺少啟動**和庫例程(而可執行檔案涵蓋了編譯、鏈結、裝載和執行的各個方面。

目標檔案內容

目標檔案中包含了編譯後的機器指令**資料、以及鏈結時所需的資訊,如符號表除錯資訊字串等。通常這些資訊會根據屬性,以「節」(「段」)的形式儲存。通常,機器指令放在**段,全域性變數或區域性靜態變數放在資料段。**段常見名字有「.code」或「.text」,資料段一般命名「.data」。

q&aq:總體來說,程式源**被編譯後主要分為兩種段:程式指令和程式資料。那麼為什麼要把指令和資料分開呢?

a:

json格式化,統一格式 ,前端與後端的矛盾

越來越多的js供我們來選擇,在使用過程中外掛程式會提供乙個資料給我們進行填充.現在大部分的資料格式都是為json.這個格式就需要後端開發人員提供給前端了.web的軟體無非就是後端給前端資料,然後前端再轉資料型別.然而這個轉換該如何來做?矛盾的產生 1.前端的乙個外掛程式,下面以乙個簡單的jquery...

關於統一格式的初始化方式

使用 進行初始化工作,在格式上更加整齊。編譯器在看到 出現的時候,會做出乙個initializer list 內部關聯到乙個array 使用 的時候實際上是使用initializer list進行初始化工作。如 int values initializer list vector int v ini...

5 模組詳解之一 格式化輸出 ,format

typecode 必選 s,獲取傳入物件的 str 方法的返回值,並將其格式化到指定位置 r,獲取傳入物件的 repr 方法的返回值,並將其格式化到指定位置 c,整數 將數字轉換成其unicode對應的值,10進製範圍為 0 i 1114111 py27則只支援0 255 字元 將字元新增到指定位置...