标签:执行文件 构建 语义 process 依赖 pil 虚拟 puts int
(1)预处理(preprocess) -E 可单独执行预处理
(2)编译(compile) -S
(3)汇编(assemble) -c
(4)链接(link)
1.寄存器:寄存器就是衣服上的口袋,只有那么几个,只装最常用或者马上用的东西。
2.内存:内存是背包,有时候拿点东西放到口袋里,有时候从口袋里拿出点东西放到背包里
3.辅存:辅存就是你家的抽屉,可以放很多东西,但是存取不方便
1.ELF文件分为3类:
(1).exec 可执行文件
经过链接的,可执行的目标文件,通常也被称为程序
(2).rel 可重定位文件:由源文件编译而成尚未链接的目标文件,通常以(.o)作为扩展名。用于与其他目标文件进行链接以构成可执行文件或动态链接库
由源文件编译而成且尚未链接的目标文件,通常以‘.o‘作为扩展名,用于与其他目标文件进行链接构成可执行文件或动态链接库,通常是一段位置独立的代码
(3).dyn 共享目标文件
动态链接库文件。用于在链接过程中与其他动态链接库或可重定位文件一起构建新的目标文件,或者在可执行文件加载时,链接到进程中作为运行代码的一部分
将程序指令和程序数据分开存放有许多好处
当程序被加载,数据和指令分别被映射到不同的虚拟区域:
由于数据区域对于进程来说是可读写的,而指令区域对于进程来说是只读的,所以这两个虚存区域可以被设置成可读写和只读,防止程序的指令被改写和利用
位于目标文件最开始的位置,包含描述整个文件的一些基本信息(ELF文件类型,版本/ABI版本,目标机器,程序入口,段表和节表的位置和长度等)
魔术字符的作用:当文件被映射到内存时,可以通过搜索该字符确定映射地址,在dump时非常有用
标签:执行文件 构建 语义 process 依赖 pil 虚拟 puts int
原文地址:https://www.cnblogs.com/M1sceden4/p/14965384.html