Подтвердить что ты не робот

Как написать компоновщик

Я написал компилятор для C, который выводит байт-код. Причина этого заключалась в том, чтобы иметь возможность писать приложения для встроенной платформы, которая работает на нескольких платформах.

У меня есть компилятор и ассемблер.

Мне нужно написать компоновщик, и я застрял.

Формат объекта является настраиваемым, разработанным вокруг интерпретатора байтового кода, поэтому я не могу использовать любые существующие линкеры.

Мое самое большое препятствие - это организовать объектный код для вывода связанного двоичного кода. В настоящее время динамическое связывание не требуется. Мне нужно сначала создать статическую ссылку.

4b9b3361

Ответ 1

http://linker.iecc.com - единственная книга, которую я знаю об этой теме.

Ответ 2

Ян Лэнс Тейлор (Ian Lance Taylor), один из главных разработчиков на золотом линкере (теперь в составе binutils), опубликовал серию блогов о том, как работают линкеры. Здесь вы можете найти .

Ответ 3

Во второй книге Linkers and Loaders. Вы указываете, что ваш формат объекта является обычным. Если формат находится под вашим контролем, вы можете рассмотреть возможность использования формата ELF с вашим байт-кодом в качестве новой архитектуры машины, a la x86, SPARC, ARM и т.д. Источники GNU binutils достаточно послушны, чтобы вы могли включить свою "архитектуру",.