Biz*_*ake 12 compiler-construction elf readelf
作为尝试从头开始编写编译器的一部分,我目前正处理处理ELF文件的部分.
在浏览了几篇关于它们的文章和规范之后,我仍然不太清楚存储段映射映射的部分.当观察由NASM + ld生成的小型可执行文件时,我可以看到.text部分以某种方式映射到LOAD类型的程序头,但是如何?
当给出一个小的(工作)可执行文件作为输入时,一小段readelf的输出:
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000
0x0000000000000084 0x0000000000000084 R E 200000
Section to Segment mapping:
Segment Sections...
00 .text
Run Code Online (Sandbox Code Playgroud)
这种映射是否需要具有可运行的可执行文件?或者它们可以完全省略,你仍然有一个有效的可执行文件?
Emp*_*ian 20
我仍然不太明白存储段映射的部分.
它们不存储在任何地方.
而是readelf通过查看文件偏移量和节和段的大小来计算映射.