2

我正在阅读: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,但它不适合新手。

4

1 回答 1

1

现代的莱文,没有错误会很好

Ian Lance Taylor 最近实现了一个仅限 ELF 的链接器,并在一系列博客文章中对其进行了描述。他们肯定比莱文更专注,更简洁。

于 2012-07-15T06:35:35.210 回答