freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

目標(biāo)文件及鏈接(已修改)

2025-01-15 14:09 本頁面
 

【正文】 目標(biāo)文件及鏈接 1 C/C++源文件 cc1/g++ 頭文件 匯編文件 as 目標(biāo)文件 生成庫 連接命令文件 可重定位模塊 ld ar 用戶庫 庫列表 可執(zhí)行程序 2 3 目標(biāo)文件是什么樣的 ? 目標(biāo)文件中的內(nèi)容至少有編譯后的機(jī)器指令代碼、數(shù)據(jù)。沒錯,除了這些內(nèi)容以 外,目標(biāo)文件中還包括了鏈接時(shí)所須要的一些信息,比如符號表、調(diào)試信息、字符串 等。 4 目標(biāo)文件的格式( ABI) ? 符號修飾標(biāo)準(zhǔn)、變量內(nèi)層布局、函數(shù)調(diào)用方式等這些跟可執(zhí)行代碼二進(jìn)制兼容性 相關(guān)的內(nèi)容稱為 ABI( Application Binary Interface)。我們常見的 ABI格式: COFF PE ELF 一般目標(biāo)文件將這些信息按不同的屬性,以“節(jié)”( Section)的形式存儲,有時(shí)候也叫“段”( Segment)。 5 exec head .text .data . . .symtab .strtab struct exec { unsigned long a_midmag。 unsigned long a_text。 unsigned long a_data。 unsigned long a_bss。 unsigned long a_syms。 unsigned long a_entry。 unsigned long a_trsize。 unsigned long a_drsize。 }。 unix系統(tǒng)使用的可執(zhí)行文件格式,由 ATT設(shè)計(jì),由其格式和頭部結(jié)構(gòu)可以看出, ,只包含程序運(yùn)行的必須信息(代碼、數(shù)據(jù)),每個節(jié)的順序是固定的,這種結(jié)構(gòu)這種結(jié)構(gòu)缺乏擴(kuò)展性,如不能包含 “現(xiàn)代 ”可執(zhí)行文件中常見的調(diào)試信息 ?,F(xiàn)在基本上已被 ELF格式取代。 目標(biāo)文件的格式 6 COFF (文件頭部 ) Option Header(可選文件頭部 ) Section1 Header(節(jié)頭部 ) …… Section n Header(節(jié)頭部 ) Raw Data for Section 1(節(jié)數(shù)據(jù) ) Raw Data for Section n(節(jié)數(shù)據(jù) ) Relocation Info for Sect. 1(節(jié)重定位數(shù)據(jù) ) Relocation Info for Sect. n(節(jié)重定位數(shù)據(jù) ) Line Numbers for Sect. 1(節(jié)行號數(shù)據(jù) ) Line Numbers for Sect. n(節(jié)行號數(shù)據(jù) ) Symbol Table String Table COFF 目標(biāo)文件的格式 7 Image Dos Header (IMAGE_DOS_HEADER) Image Dos Stub PE FILE Header(IMAGE_NT_HEADERS) Image Header(IMAGE_FILE_HEADER) Image Optional Header(IMAGE_OPTIONAL_HEADER32) Section Table IMAGE_SECTION_HEADER[] .text .data .drective .debugS other sections Symbol Table PE 目標(biāo)文件的格式 8 ELF頭 .text .rodata .data .bss . . .debug .line .strtab .symtab .shstrtab ELF 目標(biāo)文件的格式 9 int global_init_var = 84。 int global_uninit_var。 void func1( int i ) { printf( %d\n, i )。 } int main(void) { static int static_var = 85。 static int static_var2。 int a = 1。 int b。 func1( static_var + static_var2 + a + b )。 return a。 } File Header .text .data .bss 10 $ objdump h : file format elf32i386 Sections: Idx Name Size VMA LMA File off Algn 0 .text 0000005b 00000000 00000000 00000034 2**2 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE 1 .data 00000008 00000000 00000000 00000090 2**2 CONTENTS, ALLOC, LOAD, DATA 2 .bss 00000004 00000000 00000000 00000098 2**2 ALLOC 3 .rod
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1