Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Структура ломтика [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

Изображение структуры:

Типы лома [ править ]

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

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

Метаданные [ править ]

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

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

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

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

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

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

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

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

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

Если файл «.info» представляет исполняемую программу, то файл «.info» содержит информацию о стеке буферов ОЗУ, которые могут быть зарезервированы для исполняемого файла (например, 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. [1]

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

Формат 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. [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, поскольку они реализуют старую среду API Amiga, основанную на AmigaOS 3.1, и могут запускать код 68000 посредством эмуляции.

  • Примечания:
  1. ^ См. Также страницы, посвященныеистории процессора PPC на Amiga,на сайте Amiga.History.
  2. ^ Спецификации EHF(такжена английском языке) на сайте Haage & Partners.

См. Также [ править ]

  • Сравнение форматов исполняемых файлов
  • vasm, бесплатная ассемблерная часть vbcc

Ссылки [ править ]

  • Третье издание руководства 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: Заметки конференции разработчиков Amiga 1989 г., 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. ^ Штеффен Haeuser (18 декабря 2002). «взрыв из прошлого» . Проверено 1 августа 2011 .

Внешние ссылки [ править ]

  • Amiga переходит на PowerUP Неофициальная домашняя страница поддержки PowerUP
  • Стороннее описание формата фрагментов Amiga