Amiga Hunk

редактировать
Hunk
РазработаноCommodore International
Тип форматаAmiga исполняемый файл

Hunk - это исполняемый формат файла инструментов и программ операционной системы Amiga на основе Motorola 68000 ЦП и другие процессоры того же семейства. Этот вид исполняемого файла получил свое название от того факта, что программное обеспечение, запрограммированное на Amiga, разделено по своей внутренней структуре на множество частей, называемых блоками, каждая из которых может содержать либо код, либо данные.

Содержание
  • 1 Структура фрагментов
  • 2 Особенности исполняемых файлов Amiga
  • 3 Структура исполняемого файла Amiga
  • 4 Типы фрагментов
  • 5 Метаданные
    • 5.1 Иконки
  • 6 Наложение исполняемые файлы
  • 7 Другие форматы исполняемых файлов, используемые в Amiga
    • 7.1 ELF
    • 7.2 Расширенный формат Hunk
    • 7.3 AmigaOS 4 и MorphOS
  • 8 См. также
  • 9 Ссылки
  • 10 Внешние ссылки
Структура фрагментов

фрагменты в исполняемом файле Amiga могут существовать в различных типах. Есть 32-битные блоки, 16-битные блоки и даже некоторые 8-битные блоки.

Типы блоков были стандартизированы в AmigaOS и хорошо задокументированы в Руководстве по AmigaDOS под редакцией Commodore, чтобы объяснить программистам, как кодировать на Amiga, в течение многих лет. в котором Commodore производил компьютеры Amiga. Их структура была официально кодифицирована и могла быть изменена только комитетом Commodore, который затем сообщал разработчикам об изменениях для новых выпусков операционной системы Amiga.

Структура блока Amiga очень проста: в начале блока есть заголовок, указывающий, что этот вид «части кода» является известным и действительным типом блока Amiga, затем следует идентификатор, который указывает длину самого блока, а внизу находится сегмент блока, который содержит реальный код или данные.

Возможности исполняемых файлов Amiga

Исполняемые файлы Amiga могут быть запущены либо из графической оболочки Amiga, Workbench или из Amiga's интерпретатор командной строки (называемый CLI, позже AmigaShell).

Для исполняемых файлов Amiga не требуется никакого конкретного расширения имени файла. Например, апплет калькулятора «Калькулятор» можно переименовать в «Calculator.com», «Calculator.exe», «Calculator.bin» или даже «Calculator.jpeg». Все это допустимые имена для программ или инструментов, потому что AmigaOS не делает различий между расширениями файлов.

AmigaOS использует другой метод распознавания, что имеет дело с допустимым исполняемым файлом. В заголовке файла есть определенная последовательность байтов, в результате чего шестнадцатеричное значение $ 000003f3 . Эта последовательность, обозначающая исполняемый файл и позволяющая ему запускаться самостоятельно, называется magic cookie (из волшебных файлов cookie в Alice's Adventures in Wonderland автора Льюис Кэрролл ).

Такое решение для идентификации исполняемых файлов на Amiga было взято из аналогичных решений, которые были приняты в UNIX / Unix-подобных операционных системах, где волшебные файлы cookie называются magic числа.

Структура исполняемого файла Amiga

Внутренняя структура исполняемого файла Amiga очень проста. В начале файла находится волшебный файл cookie, затем объявляется общее количество блоков в исполняемый файл, а сразу после него идет прогрессивное количество блоков, начинающееся с "0" (ноль).

Первый блок всегда нумеруется, поэтому, если исполняемый файл (например) разделен на три блока, они будет пронумерован "0" для первого, "1" для второго и "2" для третьего фрагмента и т. д.

Непосредственно перед началом реального фрагмента находится таблица содержащий информацию о длине любых блоков, присутствующих в исполняемом файле, и в последней части файла размещаются реальные блоки, каждый из которых описывается своим именем типа: HUNK_CODE, HUNK_DATA и так далее.

Представление структуры:

Magic CookieОбщее количество блоковПрогрессивное количество блоковТаблица длиныРазличные блоки (Hunk_Code, Hunk_Data и т. Д.)
Типы блоков

Известные типы блоков для Amiga:

ИмяЗначение (десятичное)Значение (шестнадцатеричное)
HUNK_UNIT9993E7
HUNK_NAME10003E8
HUNK_CODE10013E9
HUNK_DATA10023EA
HUNK_BSS10033EB
HUNK_RELOC3210043EC
HUNK_RELOC1610053ED
HUNK_RELOC810063EE
HUNK_EXT10073EF
HUNK_SYMBOL10083F0
HUNK_DEBUG10093F1
HUNK_END10103F2
HUNK_HEADER10113F3
HUNK_OVERLAY10133F5
HUNK_BREAK10143F6
HUNK_DREL3210153F7
HUNK_DREL1610163F8
HUNK_DREL810173F9
HUNK_LIB10183FA
HU NK_INDEX10193FB
HUNK_RELOC32SHORT10203FC
HUNK_RELRELOC3210213FD
HUNK_ABSRELOC22163FE
HUNK_PPC_CODE*12574E9
HUNK_RELRELOC26*12604EC

* Расширенный формат фрагмента

Метаданные

Amiga могла сохранять метаданные в блоки, так как структура блоков могла быть легко адаптирована для поддержки этой функции, но формат блоков исполняемых файлов был оставлен в пользу ELF, и нет центральный орган (как уволенный Коммодор), который мог бы реализовать эту функцию как один из стандартов Amiga.

Amiga сохраняет некоторые метаданные в сопроводительных файлах, известных как ".info" (так называются от названия их суффикса расширения).

Файлы ".info" создаются каждый раз, когда проект (файл данных) сохраняется на диске. Пример: когда пользователь сохраняет файл с именем «MyProject», на диске будут созданы два файла с именами «MyProject» и «MyProject.info».

Файл «MyProject» содержит реальные данные файла проекта, а Файл "MyProject.info" содержит значок и информацию о программном обеспечении, создавшем файл, поэтому каждый раз, когда значок проекта вызывается щелчком по нему мышью, будет открываться родительское программное обеспечение (пользователи могут изменить эту информацию в любой момент). время, позволяя другим программам полагать, что они создали файл проекта, а не исходное программное обеспечение, которое его физически создало).

Привязка приложений не существует в AmigaOS, как в других системах, таких как MacOS.

Файл «.info» также содержит некоторые конкретные характеристики файла проекта и комментарии пользователей.

Файлы «.info» не отображаются на экране Workbench (Workbench - это Amiga Desktop по умолчанию GUI). На экране рабочего стола только иконка файла проекта вынесена из "информации" f появляется ile. Фактически, значок - это виртуальный носитель, который соединяет сам проект и метаданные, хранящиеся в ".info".

Когда пользователь щелкает значок левой кнопкой мыши, проект ".info" вызывает программу, которая его породила. Когда пользователь щелкает значок правой кнопкой, появляется диалоговое окно, позволяющее пользователю взаимодействовать с метаданными, содержащимися в файле «.info».

Файлы «.info» копируются или перемещаются вместе со связанным с ними файлом проекта путем перемещения значка с помощью мыши, и их можно просматривать как отдельный файл через интерфейсы командной строки Amiga, такие как AmigaShell, или с использованием сторонних файловых менеджеров или списков каталогов, таких как Directory Opus или.

Если файл «.info» представляет исполняемую программу, то файл «.info» содержит информацию о стеке буферов RAM, которые могут быть зарезервированы для исполняемого файла (например, 4096, 8192 или 16384 или более байтов ОЗУ) и даже аргументы, которые могут быть вызваны с помощью интерфейса командной строки. Например, программа Amiga может открывать свой собственный экран графического пользовательского интерфейса независимо от экрана рабочего стола. Вызывая такие аргументы, как «Экран = 800x600» и «Глубина = 8» в диалоговом окне информационного файла, пользователь может сохранить эту информацию в соответствующем файле «.info», а затем программа откроет программное обеспечение для повышения производительности на своем собственном экране. 800 × 600 с 8-битной глубиной цвета (256 цветов).

Пользователь также может удалить файлы «.info», но тогда он откажется от преимуществ наличия значка, представляющего файл проекта на рабочем столе, а также потеряет все содержащиеся в нем метаданные.

Значки

Краткий обзор значков растровых изображений, содержащихся в файлах метаданных «.info»:

Значки представляют собой растровые данные RAW, содержащиеся в файлах «.info», и нестандартные файлы Amiga IFF / LBM. Пользователи могут работать с иконками, используя стандартную программу AmigaOS "IconEdit", присутствующую в операционной системе с ранних версий. Начиная с AmigaOS версии 2.0, IconEdit может импортировать и сохранять обычные файлы IFF / LBM, используемые в качестве стандартных графических файлов в AmigaOS.

Некоторые программы Amiga, например from, могут просматривать, загружать и сохранять растровые данные как обычные значки Amiga или поскольку файлы Amiga ".info" уже существуют.

Унаследованные значки Amiga могут иметь значки с двумя состояниями, используя два разных растровых изображения. Первое растровое изображение содержит данные «тихого» значка, также известного как «тихое состояние» значка. Второе растровое изображение содержит данные о «выбранном» состоянии значка. Когда пользователь щелкает значок и активирует его, данные растрового изображения скрытого значка внезапно заменяются данными выбранного растрового изображения значка. Такое поведение придает иконкам Amiga эффект движущихся мультфильмов. Если это второе растровое изображение не существует в файле «.info» (создавать оба растровых изображения не обязательно), то при выборе значка используется обратный цветовой эффект.

Существуют сторонние «движки» значков, которые стараются поддерживать внешний вид AmigaOS в соответствии с современными стандартами других операционных систем. Эти программы исправляют процедуры ОС, предназначенные для обработки значков, заменяя их пользовательскими. Одна из таких попыток, NewIcons, стала практически новым стандартом де-факто для AmigaOS 3.x. Он был настолько популярен, что новая система значков, используемая в AmigaOS 3.5 и выше, GlowIcons, основана на формате файла значков.

Все современные Amiga-подобные операционные системы (AmigaOS 4, MorphOS и AROS ) могут связывать либо растровые данные RAW, либо файлы IFF / LBM а также файлы PNG в качестве стандартного внутреннего растрового изображения любого значка.

Наложенные исполняемые файлы

Тип HUNK_OVERLAY был предназначен для уменьшения объема оперативной памяти, необходимой для запуска программы. Исполняемые файлы со структурой наложения имеют корневой узел, который постоянно находится в памяти, а остальная часть программы разбита на более мелкие модули, которые загружаются и выгружаются автоматически при необходимости.

Формат наложения работает, добавляя небольшие заглушки в код, чтобы при переходе в подмодуль он вызывал диспетчер оверлея, который загружал требуемый модуль. Commodore определил стандартный менеджер наложения, чтобы код C мог автоматически вставлять эти заглушки, а также генерировать таблицу наложения, которую стандартный менеджер наложения знал, как читать.

Однако формат Overlay использовался редко, особенно по назначению. Чаще он использовался с настраиваемым менеджером наложения. Популярное использование формата наложения было с Titanics Cruncher, который сжимал исполняемые файлы. Вместо того, чтобы загружать весь сжатый исполняемый файл в память перед распаковкой, Titanics Cruncher использовал оверлей, поэтому в память загружался только крошечный декранчер, а затем он считывал и распаковывал данные по мере их поступления.

Другие форматы исполняемых файлов, используемые в Amiga

Со сторонними надстройками AmigaOS до 3.9 распознает различные типы исполняемых файлов, кроме формата Hunk, созданного для Motorola 68000.

ELF

Phase5 реализовал исполняемые файлы ELF для своих ускорительных плат PowerUP. Он оказался громоздким из-за динамического связывания. Затем этот формат был принят как стандартный в AmigaOS 4.0, MorphOS и AROS. Поддержка ELF была добавлена ​​в WarpUp сторонними разработчиками, и Hyperion Entertainment выпустила несколько игр WarpUp только в формате ELF.

Формат Extended Hunk

В 1997 году Haage и партнер, разработчик ядра WarpUp PowerPC для ускорителя PowerUP доски. Вместо двоичного формата ELF они решили расширить существующий формат фрагментов. Проблема с двоичным форматом ELF заключалась в том, что пользователям приходилось вносить исправления в свою систему для загрузки исполняемых файлов ELF, и смешивание кода PPC / 68k было невозможно. Расширенный формат Hunk (EHF), разработанный Haage Partner, позволял смешивать код PPC и 68k в один исполняемый файл без изменения существующей системы, если ускоритель PowerPC не был установлен..

AmigaOS 4 и MorphOS

AmigaOS 4.0 и MorphOS могут запускать ELF изначально, но, поскольку эти системы были разработаны для работы на машинах с процессорами PowerPC, разработчики также добавили совместимость с программным обеспечением WarpUP, используемым в AmigaOS 3.9. Кроме того, в MorphOS реализована совместимость программного обеспечения PowerUp, реализованная в Phase5 для карт ускорителей PowerUP.

Обе новые операционные системы также могут запускать формат Amiga Hunk, поскольку они реализуют старую среду Amiga API на основе AmigaOS 3.1 и могут выполнять код 68000 посредством эмуляции.

  • Примечания:
  1. ^См. Также страницы, посвященные истории процессора PPC на Amiga на сайте Amiga.History.
  2. ^Спецификации EHF (также на английском языке ) на сайте Haage Partners.
См. также
  • Портал Amiga
Ссылки
  • Третье издание руководства AmigaDOS (Bantam Книги), Commodore Business Machines, июль 1991 г. ISBN 0-553-35403-5
  • Справочное руководство ядра Amiga ROM, включая и Autodocs (3-е издание; темно-серая обложка) Addison-Wesley, 1991. ISBN 0-201-56773-3
  • Commodore Business Machines: 1989 Amiga Developers Conference Notes, Commodore, 1989. Номера деталей CATS: NOTES89 и NOTES89D
  • Commodore Business Machines: V3.1 Amiga Developer Update Disk Set, Commodore, 1994. Номер детали CATS: AMDEV3.1

(информация из этого набора дискет, распространяемых Commodore разработчикам Amiga, устарела, обновлена ​​и заменена на "Компакт-диск разработчика")

  • Связь odore Business Machines: Примечания к конференции разработчиков Amiga, 1988 г. Commodore, 1988. Номера деталей CATS: NOTES88 и NOTES88D
  • Стивен Леви: Руководство программиста Amiga, Compute! Publications, 1986. ISBN 0-87455-028-9
  • Юджин П. Мортимор: Справочник программиста Amiga, Sybex, 1985. ISBN 0-89588-343-0
Внешние ссылки
Последняя правка сделана 2021-06-10 18:54:15
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте