Амига Ханк - Amiga Hunk

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

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

Структура ломтя

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

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

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

Особенности исполняемых файлов Amiga

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

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

AmigaOS принял другой метод, чтобы распознать, что имеет дело с допустимым исполняемым файлом. В заголовке файла есть определенная последовательность байтов, что дает шестнадцатеричный ценность $ 000003f3. Эта последовательность, обозначающая исполняемый файл и позволяющая ему запускаться самостоятельно, называется волшебное печенье (от волшебное печенье в Приключения Алисы в стране Чудес от Льюис Кэрролл ).[нужна цитата ]

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

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

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

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

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

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

Волшебное печеньеОбщее количество скрягПрогрессивное количество блоковТаблица длиныРазличные ханки (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
HUNK_INDEX10193FB
HUNK_RELOC32SHORT10203FC
HUNK_RELRELOC3210213ФД
HUNK_ABSRELOC1610223FE
HUNK_PPC_CODE *12574E9
HUNK_RELRELOC26 *12604EC

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

Метаданные

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

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

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

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

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

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

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

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

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

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

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

Иконки

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

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

Некоторые программы Amiga, например Персональная краска от Cloanto могут просматривать, загружать и сохранять растровые данные как обычные значки 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 type был предназначен для уменьшения объема оперативной памяти, необходимой для запуска программы. Исполняемые файлы с наложенной структурой имеют корневой узел, который постоянно находится в памяти, а остальная часть программы разбивается на более мелкие модули, которые загружаются и выгружаются автоматически при необходимости.[2]

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

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

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

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

ELF

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

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

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

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.History.
  2. ^ Характеристики КВЧ (также по-английски ) на сайте Haage & Partners.

Смотрите также

использованная литература

  • Третье издание руководства AmigaDOS (Bantam Books), 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, Commodore, 1989. Номера деталей CATS: NOTES89 и NOTES89D
  • Commodore Business Machines: набор дисков с обновлением для разработчиков Amiga V3.1, Commodore, 1994. Номер детали CATS: AMDEV3.1

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

  • Commodore Business Machines: Заметки о конференции разработчиков Amiga 1988 г. Commodore, 1988 г. Номера деталей CATS: NOTES88 и NOTES88D
  • Стивен Леви: Руководство программиста Amiga, Compute! Публикации 1986 г. ISBN  0-87455-028-9
  • Юджин П. Мортимор: Справочник программиста Amiga, Sybex, 1985. ISBN  0-89588-343-0
  1. ^ http://krashan.ppa.pl//articles/amigaicons/ некоторые детали
  2. ^ http://aminet.net/package/docs/misc/Overlay Документ о двоичных файлах наложения
  3. ^ Штеффен Хойзер (18 декабря 2002 г.). "взрыв из прошлого". Получено 2011-08-01.

внешние ссылки