日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

目标文件中的几个重要的段

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 目标文件中的几个重要的段 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? 今年來學習一下目標文件。那啥是目標文件呢?簡單的說:目標文件就是經過編譯和匯編,但沒有經過沒了鏈接的文件。看一段測試代碼:

#include <stdio.h>int a = 84;//已初始化的全局變量 int b;//未初始化的全局變量void func(int i) {printf("%d\n",i); }int main() {static int c = 85;//已初始化的局部靜態變量static int d;//未初始化的局部靜態變量int e = 1;//已初始化的局部變量int f;//未初始化局部變量func(c+d+e+f);return e; }

筆者linux下該文件名為test.c,則直接執行gcc -c test.c 命令,生成test.o文件。再看:

[mapan@localhost mapam]$ objdump -h test.o test.o: file format elf64-x86-64Sections: Idx Name Size VMA LMA File off Algn0 .text 00000054 0000000000000000 0000000000000000 00000040 2**2CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE1 .data 00000008 0000000000000000 0000000000000000 00000094 2**2CONTENTS, ALLOC, LOAD, DATA2 .bss 00000004 0000000000000000 0000000000000000 0000009c 2**2ALLOC3 .rodata 00000004 0000000000000000 0000000000000000 0000009c 2**0CONTENTS, ALLOC, LOAD, READONLY, DATA4 .comment 0000002e 0000000000000000 0000000000000000 000000a0 2**0CONTENTS, READONLY5 .note.GNU-stack 00000000 0000000000000000 0000000000000000 000000ce 2**0CONTENTS, READONLY6 .eh_frame 00000058 0000000000000000 0000000000000000 000000d0 2**3CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

objdump -h 把ELF文件的各個段的基本信息打印出來。

豎著看:

.text為代碼段,存放程序源代碼編譯后的機器指令。

.data為數據段,存放已初始化的全局變量和局部靜態變量

.bss為數據段, 存放未初始化的全局變量和局部靜態變量

.rodata為只讀數據段

.conment為注釋信息段

.note.GUN-stack為堆棧段

.eh_frame為調試信息段

橫著看:

size為段的長度

File off 為段所在的位置

為了詳細了解每個段的內容,我們需要查看反匯編。

[mapan@localhost mapam]$ objdump -s -d test.o test.o: file format elf64-x86-64Contents of section .text:0000 554889e5 4883ec10 897dfcb8 00000000 UH..H....}......0010 8b55fc89 d64889c7 b8000000 00e80000 .U...H..........0020 0000c9c3 554889e5 4883ec10 c745f801 ....UH..H....E..0030 0000008b 15000000 008b0500 0000008d ................0040 04020345 f80345fc 89c7e800 0000008b ...E..E.........0050 45f8c9c3 E... Contents of section .data:0000 54000000 55000000 T...U... Contents of section .rodata:0000 25640a00 %d.. Contents of section .comment:0000 00474343 3a202847 4e552920 342e342e .GCC: (GNU) 4.4.0010 37203230 31323033 31332028 52656420 7 20120313 (Red 0020 48617420 342e342e 372d3138 2900 Hat 4.4.7-18). Contents of section .eh_frame:0000 14000000 00000000 017a5200 01781001 .........zR..x..0010 1b0c0708 90010000 1c000000 1c000000 ................0020 00000000 24000000 00410e10 8602430d ....$....A....C.0030 065f0c07 08000000 1c000000 3c000000 ._..........<...0040 00000000 30000000 00410e10 8602430d ....0....A....C.0050 066b0c07 08000000 .k...... Disassembly of section .text:0000000000000000 <func>:0: 55 push %rbp1: 48 89 e5 mov %rsp,%rbp4: 48 83 ec 10 sub $0x10,%rsp8: 89 7d fc mov %edi,-0x4(%rbp)b: b8 00 00 00 00 mov $0x0,%eax10: 8b 55 fc mov -0x4(%rbp),%edx13: 89 d6 mov %edx,%esi15: 48 89 c7 mov %rax,%rdi18: b8 00 00 00 00 mov $0x0,%eax1d: e8 00 00 00 00 callq 22 <func+0x22>22: c9 leaveq 23: c3 retq 0000000000000024 <main>:24: 55 push %rbp25: 48 89 e5 mov %rsp,%rbp28: 48 83 ec 10 sub $0x10,%rsp2c: c7 45 f8 01 00 00 00 movl $0x1,-0x8(%rbp)33: 8b 15 00 00 00 00 mov 0x0(%rip),%edx # 39 <main+0x15>39: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 3f <main+0x1b>3f: 8d 04 02 lea (%rdx,%rax,1),%eax42: 03 45 f8 add -0x8(%rbp),%eax45: 03 45 fc add -0x4(%rbp),%eax48: 89 c7 mov %eax,%edi4a: e8 00 00 00 00 callq 4f <main+0x2b>4f: 8b 45 f8 mov -0x8(%rbp),%eax52: c9 leaveq 53: c3 retq

objdump的-s參數可以將所有段的內容可以將所有段的內容以十六進制的方式打印出來,-d參數可以將指令的段反匯編。

?

對于Contents of section .text:最左面一列是偏移量,中間4列是十六進制內容,最右面一列是.text段的ASCII碼形式。它是對.text的說明。

對于Contents of section .data:里面有2個值,54000000和55000000他們分別是示例代碼中變量a和變量c。

對于.bss:

?

2 .bss 00000004 0000000000000000 0000000000000000 0000009c 2**2

它的大小是4,它存放代碼示例中變量d,而變量b沒有存放在.bss段,這是根編譯器的實現有關。這里的變量b存放在.comment段,但是編譯單元內部可見的靜態變量是存放在.bss段的。
?

?

?

?

參考資料:程序員的自我修養

?

?

?

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的目标文件中的几个重要的段的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 都市激情校园春色 | 国产亚洲在线观看 | 97人人模人人爽人人少妇 | 国产伦理自拍 | 亚洲精品中字 | 公侵犯一区二区三区四区中文字幕 | 免费看欧美大片 | 天天曰天天 | 成人av黄色| 国产精品边吃奶边做爽 | 热久久这里只有精品 | 精品久久免费视频 | 午夜在线不卡 | 88av在线播放 | 国产日韩欧美一区二区东京热 | 国产a v一区二区三区 | 狠狠操天天操夜夜操 | china国模大尺度pics | 性一交一乱一区二区洋洋av | 美女激情网 | av在线免费观看网站 | 亚洲ⅴ国产v天堂a无码二区 | 九一国产在线观看 | 无码人妻aⅴ一区二区三区玉蒲团 | 国产一精品一aⅴ一免费 | 全黄一级裸片视频 | 中出av在线| 日本999视频 | 青青草社区 | 高清视频免费在线观看 | 免费婷婷 | 国产精品www色诱视频 | 丰满少妇av| 日韩欧美亚洲一区 | av电影在线观看不卡 | 国产综合视频一区二区 | 污污的视频在线观看 | 日本在线播放 | 亚洲影视网 | √资源天堂中文在线视频 | 欧美www在线观看 | 伊人久久九 | 日韩一区二区三区免费在线观看 | 亚洲av无码一区二区三区网址 | 成人第一页| 欧美一级爱爱视频 | 精品一区在线视频 | 久久久久国产视频 | 偷拍一区二区三区四区 | 美女天天干 | 操大逼网站| 日韩三级黄 | 亚洲一卡二卡三卡四卡 | 日本一区二区不卡视频 | 黄色免费在线看 | 亚洲一区二区观看播放 | 在线免费观看av网址 | 国产乱子伦视频一区二区三区 | 亚洲天堂影视 | 羞羞免费视频 | 免费精品一区二区 | 麻豆系列在线观看 | 亚洲少妇网站 | 色婷av| 成人免费xxxxx在线视频 | 在线播放日韩 | 国产精品偷伦视频免费看 | 亚洲av无码一区二区三区在线观看 | 伊人狠狠操 | 香蕉视频久久久 | 高清av网址 | 女生被男生桶 | 蜜桃传媒一区二区亚洲av | 欧美xxxxx少妇 | 免费黄色国产视频 | 精品人妻无码一区二区三区蜜桃一 | 亚洲二三区 | 欧美手机在线 | 亚洲精品美女 | 亚洲蜜桃精久久久久久久久久久久 | 国产97免费视频 | 海量av | 67194成人| 黄色片网站免费 | 性猛交富婆╳xxx乱大交麻豆 | 蜜桃视频一区二区三区 | 黄色骚视频| 亚洲午夜av久久乱码 | 超碰在线一区 | 91快射| 99mav| 毛片a片免费看 | 高清乱码免费 | 麻豆视频二区 | 精品亚洲aⅴ无码一区二区三区 | 欧美另类xxxxx | 日日爽夜夜爽 | 亚洲综合一区在线 | 精品人妻一区二区三区日产 |