学习目标

  • 理解 ELF 格式
  • 实现 ELF 加载器

3.1 ELF 结构

ELF Header
Program Headers
Sections

3.2 加载器实现

void load_elf(const char *filename) {
    FILE *fp = fopen(filename, "rb");

    // 读取 ELF Header
    Elf32_Ehdr ehdr;
    fread(&ehdr, sizeof(ehdr), 1, fp);

    // 读取 Program Headers
    for (int i = 0; i < ehdr.e_phnum; i++) {
        Elf32_Phdr phdr;
        // 加载到内存
    }

    // 设置入口点
    cpu.pc = ehdr.e_entry;
}

下一步

第 4 章:寄存器实现

更新时间: