我正在阅读:Levine、Linkers 和 Loaders。在第 95 页,他说:
Module-A 0->600H
Module-B 0->400H
Module-C 0->500H
在单段存储分配中,这应该是:
0-600 601-A01 A02-F03
? 他说是从0-F00???基本上他只是连接所有模块,所以..
我想知道是否有人可以推荐一本合适的书。我正在尝试了解链接器符号表、加载器、链接编辑器、GOT/PLT 以及语言如何适应这一切.. 准确地说.. 如果我有一堆函数和变量/c 文件,它们怎么样存储在 .obj 中,.obj 文件包含什么(部分、段)以及它如何与 ELF 相匹配以及 ELF 如何与分页内存相匹配。我发现 Levine 很难理解并且非常冗长。他在 Pentium/SPARC/IBM/Motorola 处理器上有一些东西,这一切似乎有点过时和古老,令人难以置信的令人沮丧。我尝试查看各种维基百科条目和谷歌搜索,但情况更糟!到目前为止,我发现的唯一一本像样的“书”是英特尔软件开发人员手册第 3 卷,
我使用 Linux、gcc、g++ 所以.. 我只是想清楚地了解当你做 objdump/nm 时所有那些神秘的东西意味着什么现代的莱文,没有错误会很好.. 如果它会很棒还涵盖了 Microsoft PE 格式。
我已经尝试过非常出色的 Intel SysV ABI,但它不适合新手。