Section目標文件中最小單位稱為塊,一個塊就是最終在存儲器映象中占據連續空間的一段代碼或數據。
1、COFF目標文件包含三個默認的塊:
.text可執行代碼
.data已初始化數據
.bss為未初始化數據保留的空間
2、匯編器對塊的處理
未初始化塊
.bss 變量存放空間
.usect 用戶自定義的未初始化段
初始化塊
.text 匯編指令代碼
.data 常數數據(比如對變量的初始化數據)
.sect 用戶自定義的已初始化段
.asect 通.sect,多了絕對地址定位功能,一般不用
3、C語言的段
未初始化塊(data)
.bss 存放全局和靜態變量
.ebss 長調用的.bss(超過了64K地址限制)
.stack 存放C語言的棧
.sysmem 存放C語言的堆
.esysmem 長調用的.sysmem(超過了64K地址限制)
初始化塊
.text 可執行代碼和常數(program)
.switch switch語句產生的常數表格(program/低64K數據空間)
.pinit Tables for global constructors (C++)(program)
.cinit 用來存放對全局和靜態變量的初始化常數值(program)
.const 全局和靜態的const變量初始化值和字符串常數,(data)
.econst 長.const(可定位到任何地方)(data)