如何编写链接器
我已经为 C 语言编写了一个输出字节码的编译器。这样做的原因是能够为在多个平台上运行的嵌入式平台编写应用程序。
我有编译器和汇编器。
我需要编写一个链接器,但被卡住了。
对象格式是一种自定义格式,围绕字节码解释器设计,因此我无法真正使用任何现有的链接器。
我最大的障碍是如何组织目标代码以输出链接的二进制文件。 此时动态链接不是必需的。 我需要首先让静态链接正常工作。
I have written a compiler for C that outputs byte code. The reason for this was to be able to write applications for an embedded platform that runs on multiple platforms.
I have the compiler and the assembler.
I need to write a linker, and am stuck.
The object format is a custom one, designed around the byte code interpreter, so I cant really use any existing linkers.
My biggest hurdle is how to organize the object code to output the linked binary.
Dynamic linking is not necessary, at this time.
I need to get static linking working first.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Ian Lance Taylor 是 gold 链接器(现在是 binutils 的一部分)的主要开发人员之一,发布了一系列有关链接器如何工作的博客。您可以在此处找到它。
Ian Lance Taylor, one of the main developers on the gold linker(now part of binutils), posted a series of blogs on how linkers work. You can find it here.
http://linker.iecc.com 是我所知道的关于这个主题的唯一一本书。
http://linker.iecc.com is the only book I know about this subject.
我赞同《链接器和加载器》一书。您声明您的对象格式是自定义格式。如果格式在您的控制之下,您可以考虑将 ELF 格式与字节码一起使用作为新的机器架构,如 x86、SPARC、ARM 等。GNU binutils 源代码具有足够的可塑性,允许您合并您的“架构” 。
I second the Linkers and Loaders book. You state that your object format is a custom one. If the format is under your control, you could consider using the ELF format with your bytecode as a new machine architecture, a la x86, SPARC, ARM, etc. The GNU binutils sources are sufficiently malleable to allow you to incorporate your "architecture".