← На заглавную страницу базы знаний проекта Д

Проблема 000004 (kb000004): Формат исполняемых файлов Д-ОС

§ 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

Hosted by uCoz