LINUX.ORG.RU

История изменений

Исправление ados, (текущая версия) :

Всё таки решусь задать вопрос. У меня не было курсов ассемблера и, скорее всего, не очень хорошо варюсь в теме. Наверно ниже мной описанное сделает вас смеяться или призовёт AiFiLTr0 с его аватаркой.

Вопрос касается создания standalone бинарников. Сабж я представляю как программу которая работает, оперируя, скомпилированными бинарными сущностями инструкций, которые подаёт исполнительной системе. Сабж - реализация компилятор очень динамичного языка и поэтому при создании бинарника вкладывает в него свой образ с рантаймом и всем инструментарием компилятора. Это весьма кстати при создании мощный программ-метапрограмм и здесь как-бы проблем нет. Но из малой популярности cl следует, что на практике подобные программы и их задачи редки и преобладают те задачи, где всё добро вложенное сабжем в исполняемый образ становится оверхедом. Одно дело при указании определённой опции, а также функции main для исполняемого бинарника скормить все ненужные этой функции main lisp-сущности сборщику мусора. Другое дело - определить каким-то образом, что main - элементарнейшая программа, которая линкуется с достаточно простыми функциями, в которых макросы серьёзной кодогенерацией не занимаются (знаете ли, такие программы на лиспе писать тоже удобно). Т.е. практически важное тело программы - кучка бинарных сущностей, которым компилятор для работы не нужен и можно их, перелинковав, упаковать в этакий хорошо оптимизированный исполняемый файл. Конечно это всё после указания пользователем опций и деклараций, что возможность загрузить swank и всё похачить не нужна. Ну вот, насколько это возможно?

Исходная версия ados, :

Всё таки решусь задать вопрос. У меня не было курсов ассемблера и, скорее всего, не очень хорошо варюсь в теме. Наверно ниже мной описанное сделает вас смеяться.

Вопрос касается создания standalone бинарников. Сабж я представляю как программу которая работает, оперируя, скомпилированными бинарными сущностями инструкций, которые подаёт исполнительной системе. Сабж - реализация компилятор очень динамичного языка и поэтому при создании бинарника вкладывает в него свой образ с рантаймом и всем инструментарием компилятора. Это весьма кстати при создании мощный программ-метапрограмм и здесь как-бы проблем нет. Но из малой популярности cl следует, что на практике подобные программы и их задачи редки и преобладают те задачи, где всё добро вложенное сабжем в исполняемый образ становится оверхедом. Одно дело при указании определённой опции, а также функции main для исполняемого бинарника скормить все ненужные этой функции main lisp-сущности сборщику мусора. Другое дело - определить каким-то образом, что main - элементарнейшая программа, которая линкуется с достаточно простыми функциями, в которых макросы серьёзной кодогенерацией не занимаются (знаете ли, такие программы на лиспе писать тоже удобно). Т.е. практически важное тело программы - кучка бинарных сущностей, которым компилятор для работы не нужен и можно их, перелинковав, упаковать в этакий хорошо оптимизированный исполняемый файл. Конечно это всё после указания пользователем опций и деклараций, что возможность загрузить swank и всё похачить не нужна. Ну вот, насколько это возможно?