cmd 鏈結器配置檔案

2021-06-13 21:29:46 字數 1063 閱讀 3743

cmd:鏈結器配置檔案,存放鏈結器的配置資訊,cmd檔案使開發者可以通過自己定義的儲存器模組來配置系統儲存器,說白點也就是cmd是用來分配rom和ram空間用的,告訴鏈結程式怎樣計算位址和分配空間。

memory命令:描述系統實際的硬體資源

section命令:描述「段」如何定位

其中比較關鍵的就是memory和sections兩個偽指令的使用,memory用來建立目標儲存器的模型,sections指令就可以根據這個模型來安排各個段的位置,memory指令可以定義目標系統的各種型別的儲存器,及容量。

在網上你會發現很多cmd的內容是此型別的,如下:

memory

sections

如果第一次見cmd的人肯定會疑問了 page 0 page1又是啥東西,而又有人會見到

memory

其實isram和sdram page0 page1都可當做是段或塊的稱號而已,不過這裡page0對應rom page1對應著ram。page 裡包含的區間名字與其後面的引數反映了該區間的起始位址和長度.

sections:(在程式裡新增下面的段名如.vectors.用來指定該段名以下,另乙個段名以上的程式(屬於page0)或資料(屬於page1)放到「>」符號後的空間名字所在的地方。

儲存模型:c程式的**和資料如何定位

系統定義

.cinit 存放程式中的變數初值和常量

.const 存放程式中的字元常量、浮點常量和用const宣告的常量

.switch 存放程式中switch語句的跳轉位址表

.text 存放程式**

.bss 為程式中的全域性和靜態變數保留儲存空間

.far 為程式中用far宣告的全域性和靜態變數保留空間

.stack 為程式系統堆疊保留儲存空間,用於儲存返回位址、函式間的引數傳遞

、儲存區域性變數和儲存中間結果

.sysmem 用於程式中的malloc 、calloc 、和realoc 函式動態分配儲存空間

例子:-stack 0x4000 //定義0x4000大小的棧

-heap  0x1000000

memory

sections

鏈結命令檔案( cmd)解析

彙編器對段的處理是通過段偽指令來區別各個段,並將段名相同的語句彙編在一起。預備知識 鏈結器的主要任務是 根據鏈結命令檔案 cmd檔案 將乙個或多個coff目標檔案鏈結起來,生成儲存器映像檔案 map 和可執行檔案 out coff目標模組 c 不區分大小寫 h 不太重要 test.obj 輸入的目標...

drbd配置檔案 drbd配置檔案

drbd配置檔案 vim usr local drbd etc drbd.d global common.conf global usage count yes 是否參加drbd使用者統計 common protocol c 使用drbd的第三種同步協議 disk 使用dpod功能保證在數 on i...

Spring配置檔案載入外部配置檔案

有時,應用程式可能需要從不同的位置 例如 檔案系統 classpath或者url 讀取外部資源 例如 文字檔案 xml檔案 屬性檔案或或者影象檔案 通常,為了從不同位置載入資源,需要和不同的api打交道。spring的資源載入器提供了乙個統一的getresource 方法,使用這個方法可以通過資源路...