Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top