程序员的自我修养-读书笔记(2)
3 目标文件里有什么
3.1 目标文件格式
1)可执行文件:PE(Windows) 和 ELF(linux), 都是COFF格式的变种。目标文件(.obj, .o)采用一样的格式。
2)动态链接库:(windows的.dll,linux的.so)
3) 静态链接库:(.lib, .a)
3.2 目标文件是什么样的
1)分成数据段和代码段的好处:1.代码段设为只读,防止误写。2.提高缓存命中率(数据缓存和指令缓存)。3.多个进程时,只有一份代码段节约内存。
3.3 挖掘 .o
1) objdump -h simple.o 打印各个段的基本信息 (CONTENTS表示文件中实际存在)
size simple.o 各个段的大小
objdump -s -d simple.o (-s各个段十六进制打印, -d 将指令段反编译)