2009-08-25 2 views
4

Для удовольствия я работаю над компилятором для небольшого языка, и сначала я нацелен на набор инструкций ARM из-за его легкости. В настоящее время я могу скомпилировать код, поэтому у меня есть машинный код ARM для тела каждого метода. На данный момент мне нужно, чтобы начать связывать несколько вещей вместе:Какие доступные исполняемые бинарные форматы и эмуляторы?

  • Какой формат должен сохраняться свой машинный код, так что я могу ...
  • Выполнить это в какой отладчик?

В настоящее время нет поддержки ввода/вывода и т. Д., Поэтому отладка будет сильно зависеть от моей способности выполнять демонтаж и просматривать регистры процессора/память.

Я запускаю Windows и мой компилятор работает только в Windows, поэтому предпочтительнее иметь какой-то эмулятор в Windows.

Редактировать: Похоже, я могу использовать эмулятор Visual Studio Windows Mobile 6. На данный момент я могу просто сохранить результаты в простом двоичном формате и загрузить его в память эмулятора через крошечное консольное приложение на C++, а затем перейти к нему с помощью указателя на функцию. Позже, похоже, мне нужно будет поддерживать форматы ELF и PE.

+0

Возможно, добавьте тег 'embedded', если это связано с встроенным программным обеспечением. –

+0

Да, вы можете использовать PE с Windows Mobile. И крошечный «бин-стартер» - хорошая недорогая идея, просто хочу предложить ее, но слишком поздно :) – zxcat

ответ

3

Что касается форматов файлов ... самый простой будет:

Эти форматы могут записывать двоичные данные и целевой диапазон адресов (ы) для данные для загрузки. Вот и все.

Более способный формат содержит больше информации:

  • ELF
    • для максимальной информации, включают DWARF отладочную информацию

ELF довольно широко поддерживается, и не слишком сложным. DWARF позволяет записывать очень выразительную отладочную информацию для отладки сложных языковых конструкций. Однако для достижения этой выразительности это может быть очень сложный формат для написания.

+1

Эльф наиболее часто используется, вам нужно будет его поддержать. это довольно легко, но не так просто, как srec или intel hex. –