← На заглавную страницу базы знаний проекта Д
§ 1. Описание проблемы
Разрабатывая операционную систему Д я столкнулся с такими проблемами как исполняемые файлы. К сожалению сообщество программистов уже пережило свой вавилон, поэтому сейчас на планете господствуют множество совершенно различных языков программирования. Весомую нишу занимают также и интерпретируемые языки, то есть те, исходный код для которых невозможно скомпилировать. Поэтому и нельзя в ОС привести формат выполняемого кода к единому занменателю, а приходится закладываться на много языков.
В сложивщейся ситуации для решения проблемы был разработан особенный формат исполняемых файлов, способный поддерживать множество разных языков.
§ 2. Формат испольняемых файлов
Исполняемые файлы Д-ОС имеют довольно-таки простой формат. Машинный код может располагаться в любой части файла. Загрузчик распознает машинный код, если перед ним содержится следующая последовательность байтов.
0x00 ; символ начала машинного кода. 0x?? ; Идентификатор для обозначения компилятора 0x?? ; исполняемого кода. На случай если код уже 0x?? ; скомпилирован есть комбинация: 64h 61h 79h 0x??..0x?? - блок кода.
Как видно данный документ не задает жестко способ указания длины блока с кодом. Этот способ зависит от типа компилятора, который будет применяться при компляции. Опять же в случае если машинный код, форма блока кода имеет вид:
0x?? ; . 0x?? ; Длина блока с кодом, включая 0x?? ; это его поле. 0x?? ; . 0x??, 0x??, 0x??, 0x??, 0x??, 0x??...
)c( 9:19 01.03.2007, o`kante