Ответ 1
http://linker.iecc.com - единственная книга, которую я знаю об этой теме.
Я написал компилятор для C, который выводит байт-код. Причина этого заключалась в том, чтобы иметь возможность писать приложения для встроенной платформы, которая работает на нескольких платформах.
У меня есть компилятор и ассемблер.
Мне нужно написать компоновщик, и я застрял.
Формат объекта является настраиваемым, разработанным вокруг интерпретатора байтового кода, поэтому я не могу использовать любые существующие линкеры.
Мое самое большое препятствие - это организовать объектный код для вывода связанного двоичного кода. В настоящее время динамическое связывание не требуется. Мне нужно сначала создать статическую ссылку.
http://linker.iecc.com - единственная книга, которую я знаю об этой теме.
Ян Лэнс Тейлор (Ian Lance Taylor), один из главных разработчиков на золотом линкере (теперь в составе binutils), опубликовал серию блогов о том, как работают линкеры. Здесь вы можете найти .
Во второй книге Linkers and Loaders. Вы указываете, что ваш формат объекта является обычным. Если формат находится под вашим контролем, вы можете рассмотреть возможность использования формата ELF с вашим байт-кодом в качестве новой архитектуры машины, a la x86, SPARC, ARM и т.д. Источники GNU binutils достаточно послушны, чтобы вы могли включить свою "архитектуру",.