可执行文件 ⇒ 一个描述了状态机的初始状态 (迁移) 的数据结构
<aside> 📝 Loader / 加载器
操作系统内核也是一个 ELF 文件,加载时同样进行 Loader 的三个步骤
On Linux x86-64 systems, the code segment starts at address 0x400000
, followed by the data segment.
随着库函数越来越大,希望项目能够 “运行时链接”。
目的在于:
假设编译器可以生成生成位置无关代码 (Position-Independent Code, PIC)
对于实现一个动态连接库,我们可以拆分成以下四点需求:
LOAD(""libc.dl")
IMPORT(putchar)