谈谈编译后的目标文件

本为主要解决三个问题:什么是目标文件?目标文件的格式是怎样的?为什么要设计成这样的格式

什么是目标文件?

目标文件就是源代码编译后但是并未进行链接的文件,比如windows下面的 .obj  和Linux下面的 .o 等。

目标文件的格式

目标文件一般分成两种,windows下面的PE(Portable Executable)和Linux下面的 ELF(Executable Linkable Format)

目标文件的组成结构图:BSS(Block Started by Symbol)

谈谈编译后的目标文件_第1张图片


那么为什么要把程序指令和程序数据分开存放呢?

1. 数据区域对于进程来说是可读可写的,对于指令区域只可读,这样可防止程序指令被修改

2. 程序区和指令区分离有利于提高程序的局部性,提高CPU的缓存命中率

3. 当系统中运行多个改程序副本时,他们的指令都一样,这样的分离有利于共享指令,节省内存


你可能感兴趣的:(谈谈编译后的目标文件)