Разработано | Commodore International |
---|---|
Тип формата | Amiga исполняемый файл |
Hunk - это исполняемый формат файла инструментов и программ операционной системы Amiga на основе Motorola 68000 ЦП и другие процессоры того же семейства. Этот вид исполняемого файла получил свое название от того факта, что программное обеспечение, запрограммированное на Amiga, разделено по своей внутренней структуре на множество частей, называемых блоками, каждая из которых может содержать либо код, либо данные.
фрагменты в исполняемом файле Amiga могут существовать в различных типах. Есть 32-битные блоки, 16-битные блоки и даже некоторые 8-битные блоки.
Типы блоков были стандартизированы в AmigaOS и хорошо задокументированы в Руководстве по AmigaDOS под редакцией Commodore, чтобы объяснить программистам, как кодировать на Amiga, в течение многих лет. в котором Commodore производил компьютеры Amiga. Их структура была официально кодифицирована и могла быть изменена только комитетом Commodore, который затем сообщал разработчикам об изменениях для новых выпусков операционной системы 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 очень проста. В начале файла находится волшебный файл cookie, затем объявляется общее количество блоков в исполняемый файл, а сразу после него идет прогрессивное количество блоков, начинающееся с "0" (ноль).
Первый блок всегда нумеруется, поэтому, если исполняемый файл (например) разделен на три блока, они будет пронумерован "0" для первого, "1" для второго и "2" для третьего фрагмента и т. д.
Непосредственно перед началом реального фрагмента находится таблица содержащий информацию о длине любых блоков, присутствующих в исполняемом файле, и в последней части файла размещаются реальные блоки, каждый из которых описывается своим именем типа: HUNK_CODE, HUNK_DATA и так далее.
Представление структуры:
Magic Cookie | Общее количество блоков | Прогрессивное количество блоков | Таблица длины | Различные блоки (Hunk_Code, Hunk_Data и т. Д.) |
---|
Известные типы блоков для Amiga:
Имя | Значение (десятичное) | Значение (шестнадцатеричное) |
---|---|---|
HUNK_UNIT | 999 | 3E7 |
HUNK_NAME | 1000 | 3E8 |
HUNK_CODE | 1001 | 3E9 |
HUNK_DATA | 1002 | 3EA |
HUNK_BSS | 1003 | 3EB |
HUNK_RELOC32 | 1004 | 3EC |
HUNK_RELOC16 | 1005 | 3ED |
HUNK_RELOC8 | 1006 | 3EE |
HUNK_EXT | 1007 | 3EF |
HUNK_SYMBOL | 1008 | 3F0 |
HUNK_DEBUG | 1009 | 3F1 |
HUNK_END | 1010 | 3F2 |
HUNK_HEADER | 1011 | 3F3 |
HUNK_OVERLAY | 1013 | 3F5 |
HUNK_BREAK | 1014 | 3F6 |
HUNK_DREL32 | 1015 | 3F7 |
HUNK_DREL16 | 1016 | 3F8 |
HUNK_DREL8 | 1017 | 3F9 |
HUNK_LIB | 1018 | 3FA |
HU NK_INDEX | 1019 | 3FB |
HUNK_RELOC32SHORT | 1020 | 3FC |
HUNK_RELRELOC32 | 1021 | 3FD |
HUNK_ABSRELOC2216 | 3FE | |
HUNK_PPC_CODE* | 1257 | 4E9 |
HUNK_RELRELOC26* | 1260 | 4EC |
* Расширенный формат фрагмента
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 использовал оверлей, поэтому в память загружался только крошечный декранчер, а затем он считывал и распаковывал данные по мере их поступления.
Со сторонними надстройками AmigaOS до 3.9 распознает различные типы исполняемых файлов, кроме формата Hunk, созданного для Motorola 68000.
Phase5 реализовал исполняемые файлы ELF для своих ускорительных плат PowerUP. Он оказался громоздким из-за динамического связывания. Затем этот формат был принят как стандартный в AmigaOS 4.0, MorphOS и AROS. Поддержка ELF была добавлена в WarpUp сторонними разработчиками, и Hyperion Entertainment выпустила несколько игр WarpUp только в формате ELF.
В 1997 году Haage и партнер, разработчик ядра WarpUp PowerPC для ускорителя PowerUP доски. Вместо двоичного формата ELF они решили расширить существующий формат фрагментов. Проблема с двоичным форматом ELF заключалась в том, что пользователям приходилось вносить исправления в свою систему для загрузки исполняемых файлов ELF, и смешивание кода PPC / 68k было невозможно. Расширенный формат Hunk (EHF), разработанный Haage Partner, позволял смешивать код PPC и 68k в один исполняемый файл без изменения существующей системы, если ускоритель PowerPC не был установлен..
AmigaOS 4.0 и MorphOS могут запускать ELF изначально, но, поскольку эти системы были разработаны для работы на машинах с процессорами PowerPC, разработчики также добавили совместимость с программным обеспечением WarpUP, используемым в AmigaOS 3.9. Кроме того, в MorphOS реализована совместимость программного обеспечения PowerUp, реализованная в Phase5 для карт ускорителей PowerUP.
Обе новые операционные системы также могут запускать формат Amiga Hunk, поскольку они реализуют старую среду Amiga API на основе AmigaOS 3.1 и могут выполнять код 68000 посредством эмуляции.
(информация из этого набора дискет, распространяемых Commodore разработчикам Amiga, устарела, обновлена и заменена на "Компакт-диск разработчика")