<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Amiga_Hunk</id>
	<title>Amiga Hunk - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Amiga_Hunk"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Amiga_Hunk&amp;action=history"/>
	<updated>2026-06-03T11:55:01Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Amiga_Hunk&amp;diff=1667956&amp;oldid=prev</id>
		<title>imported&gt;Overstolzen: /* growthexperiments-addlink-summary-summary:2|1|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Amiga_Hunk&amp;diff=1667956&amp;oldid=prev"/>
		<updated>2024-12-30T18:15:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|1|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Hunk&amp;#039;&amp;#039;&amp;#039; ist das ausführbare [[Dateiformat]] von Programmen unter dem [[AmigaOS|klassischen AmigaOS]] (bis zur Version 3.9) für [[Amiga]]s basierend auf Prozessoren der [[Motorola 68000er-Familie]]. Ursprünglich wurde es von METACOMCO plc. im Rahmen von Tripos definiert, welches in AmigaDOS aufging.&amp;lt;ref&amp;gt;{{cite book|author=METACOMCO plc.|title=Introduction to Tripos|year=1986|url=https://archive.org/details/1986-metacomco-intro-to-tripos|language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Name „Hunk“ ist dabei von der Art und Weise abgeleitet, wie die Software intern strukturiert ist; nämlich als mehrere kleine &amp;#039;&amp;#039;Brocken&amp;#039;&amp;#039; oder Stücken (englisch &amp;#039;&amp;#039;hunks&amp;#039;&amp;#039;). Jeder einzelne dieser Hunks kann dabei Daten und ausführbaren Programmcode enthalten.&lt;br /&gt;
== Hunk-Struktur ==&lt;br /&gt;
Die Hunks in den ausführbaren Programmen des Amigas existieren in mindestens drei verschiedenen Formen. Es gibt 32-Bit-, 16-Bit- und vereinzelt auch 8-Bit-Hunks.&lt;br /&gt;
&lt;br /&gt;
Die verschiedenen Hunks sind im [[AmigaOS]] standardisiert und im &amp;#039;&amp;#039;The AmigaDOS Manual&amp;#039;&amp;#039; ausführlich dokumentiert.&amp;lt;ref&amp;gt;{{archive.org| 1991-baker-jesup-et-al-the-amigados-manual-3rd-ed | The AmigaDOS Manual, Chapter 10, Amiga Binary File Structture |Blatt=n368 }}&amp;lt;/ref&amp;gt; Diese Standardisierung wurde von [[Commodore International|Commodore]] selber überwacht und bei Bedarf erweitert.&lt;br /&gt;
Die Standardisierungen galten für Entwickler über die Jahre hinweg als Richtlinien für Amiga-systemkonforme Programmierung. Die Strukturen waren offiziell im System kodiert und konnten nur von einem Commodore-Komitee für neue Versionen des AmigaOS verändert werden. Anschließend wurden sie an die Entwickler herausgegeben.&lt;br /&gt;
&lt;br /&gt;
Die Struktur des Amiga-Hunk-Formates ist sehr einfach gehalten. Es besteht im Prinzip aus drei Teilen: einem Kopf (Header), einer ID (die Größe des Hunks) und anschließend ein Segment, welches den Programmcode oder die Daten enthält.&lt;br /&gt;
&lt;br /&gt;
Der Header muss dabei einem dem AmigaOS bekannten Typ entsprechen.&lt;br /&gt;
&lt;br /&gt;
== Merkmale eines ausführbaren Amigaprogrammes ==&lt;br /&gt;
Die Programme können entweder von der grafischen [[Betriebssystem-Shell]] des AmigaOS, des Desktops ([[Amiga Workbench|Workbench]]), aus der Amiga-[[Kommandozeile|CLI]] (AmigaShell) oder aus einem [[Dateimanager]] heraus gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Dateien unter dem AmigaOS benötigen keine Dateiendungen. Dateien können beliebig, inklusive der Dateiendung umbenannt werden. Unter AmigaOS werden Dateitypen über Hunks, Header oder einem &amp;#039;&amp;#039;Magic Cookie&amp;#039;&amp;#039; erkannt. Dieses &amp;#039;&amp;#039;Magic Cookie&amp;#039;&amp;#039; ($000003f3) wird zum Beispiel vom AmigaOS zur Kennzeichnung von ausführbaren Programmen verwendet und ist ein Bestandteil des Headers. Der Name stammt aus dem Märchen &amp;#039;&amp;#039;[[Alice im Wunderland]]&amp;#039;&amp;#039;. Ein ähnliches Verfahren wird auch von [[Unix]]-artigen Betriebssystemen verwendet und dort &amp;#039;&amp;#039;Magic Number&amp;#039;&amp;#039; genannt.&lt;br /&gt;
&lt;br /&gt;
== Struktur eines ausführbaren Amigaprogrammes ==&lt;br /&gt;
Die interne Struktur eines Amigaprogrammes ist ebenfalls recht einfach gehalten. Die Struktur beginnt mit dem &amp;#039;&amp;#039;Magic Cookie&amp;#039;&amp;#039;, gefolgt von der Anzahl aller vorhandenen Hunks und dann einem Segment, das alle Hunks in ihrer Reihenfolge (bei &amp;#039;&amp;#039;0&amp;#039;&amp;#039; beginnend) enthält. Der erste Hunk trägt immer die Nummer null.&lt;br /&gt;
&lt;br /&gt;
Kurz bevor das Hunksegment startet, steht eine Tabelle, die die Länge eines jeden Hunks enthält. Jeder Hunk beginnt dabei mit einer ID, der ein gewisser Hunktyp (&amp;#039;&amp;#039;HUNK_CODE&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;HUNK_DATA&amp;#039;&amp;#039;) zugeordnet ist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Magic Cookie&lt;br /&gt;
| Anzahl der Hunks&lt;br /&gt;
| Progressive Anzahl der Hunks&lt;br /&gt;
| Hunk-Längen-Tabelle&lt;br /&gt;
| Verschiedene Hunks (Hunk_Code, Hunk_Data etc.)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Hunktypen ==&lt;br /&gt;
Dem AmigaOS bekannte Hunktypen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
! Nummer&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_UNIT || 999&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_NAME || 1000&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_CODE || 1001&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_DATA || 1002&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_BSS || 1003&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELOC32 || 1004&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELOC16 || 1005&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELOC8 || 1006&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_EXT || 1007&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_SYMBOL || 1008&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_DEBUG || 1009&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_END || 1010&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_HEADER || 1011&lt;br /&gt;
|-&lt;br /&gt;
| (unbenutzt) || 1012&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_OVERLAY || 1013&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_BREAK || 1014&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_DREL32 || 1015&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_DREL16 || 1016&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_DREL8 || 1017&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_LIB || 1018&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_INDEX || 1019&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELOC32SHORT || 1020&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELRELOC32 || 1021&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_ABSRELOC16 || 1022&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_PPC_CODE || 1257&lt;br /&gt;
|-&lt;br /&gt;
| HUNK_RELRELOC26 || 1260&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metadaten ==&lt;br /&gt;
Der Amiga wäre durchaus in der Lage, [[Metadaten]] in Hunks abzulegen. Die Struktur der Hunks könnte jedenfalls relativ einfach dafür angepasst werden. Diese Änderungen wurden aber zugunsten des [[Executable and Linking Format|ELF]]-Formates verworfen. Heute existiert aber kein Commodore-Komitee mehr, welches diese Änderungen überwachen und implementieren könnte.&lt;br /&gt;
&lt;br /&gt;
Der Amiga speichert daher einen Teil seiner Metadaten in den sogenannten &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-[[Filialdatei]]en ab. Das Prinzip dieser Dateien gleicht ein wenig den alten ausführbaren Programmen des [[Macintosh]] und dabei deren [[resource fork]].&lt;br /&gt;
&lt;br /&gt;
Die &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Dateien werden in der Regel bei jeder Erstellung von Dateien (Projektdateien) unter AmigaOS mit erstellt. Die &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei enthält Informationen wie zum Beispiel das eigentliche Icon der Datei, Informationen über den Ersteller der Datei, Erstellungszeit, nötige Anzeigesoftware, Dateigrundtyp oder Benutzerkommentare. Im AmigaOS existiert keine feste Bindung an Anwendungen wie zum Beispiel in [[MacOS]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Dateien sind nicht direkt auf der [[Amiga Workbench|Workbench]] sichtbar. Die Workbench stellt die Datei und ihre &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei als eine Einheit dar, wobei zur Darstellung eines Icons die Bitmap-Informationen aus der &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn der Benutzer das Icon mit der linken Maustaste doppelt zum Ausführen anklickt, wird jenes Programm gestartet, welches als Anzeigeprogramm in der &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei eingestellt ist und die eigentliche Datei als Argument übergeben. Mit der rechten Maustaste kann ein Menü geöffnet werden, in dem die Datei umbenannt oder ein Informationsfenster geöffnet werden kann. In dem Informationsfenster kann der Benutzer ein Großteil der Metainformationen ändern.&lt;br /&gt;
&lt;br /&gt;
Beide Dateien, die eigentliche Datei und die &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei, werden immer zusammen bewegt, wenn man sie auf der Workbench mit der Maus verschiebt oder markiert. Sie werden immer als eine Einhalt behandelt. Möchte man die Dateien einzeln manipulieren, ist man auf die CLI oder einen Dateimanager wie [[Directory Opus]] angewiesen.&lt;br /&gt;
&lt;br /&gt;
Wenn die &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei ein ausführbares Programm repräsentiert, enthält sie Informationen über die [[Stapelspeicher|Stack]]-Größe des Programmes (4096 Bytes, 8192 Bytes etc.). Die Informationen werden auch dann beachtet, wenn sie über die CLI des AmigaOS gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Der Benutzer hat auch die Möglichkeit, die &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Datei zu entfernen, entfernt dabei aber auch alle Metainformationen und das Icon.&lt;br /&gt;
&lt;br /&gt;
=== Icons ===&lt;br /&gt;
Die Icons sind ein Bestandteil der &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Dateien und sind im Prinzip eingebettete rohe Bitmaps und nicht das Standard-[[Amiga]]-[[Interchange File Format|IFF]]/[[Interchange File Format#ILBM-Format|ILBM]]-Format. Der Benutzer kann die Bitmaps in den &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Dateien mit dem AmigaOS beiliegenden Standardprogramm &amp;#039;&amp;#039;IconEdit&amp;#039;&amp;#039; bearbeiten. Seit AmigaOS 2.0 ist das Programm auch in der Lage, IFF/ILBM-Bilder zu im- und exportieren.&lt;br /&gt;
&lt;br /&gt;
Einige weitere Amigaprogramme, wie zum Beispiel das verbreitete [[Personal Paint]] von [[Cloanto]], sind in der Lage, die Bitmap-Informationen aus den &amp;#039;&amp;#039;.info&amp;#039;&amp;#039;-Dateien zu laden, zu speichern und anzuzeigen. Die klassischen Amiga-Icons (bis AmigaOS 3.1) sind sogenannte &amp;#039;&amp;#039;two-state&amp;#039;&amp;#039; Icons. Sie beinhalten zwei Bitmaps, eine für den normalen Zustand und eine für den gedrückten Zustand. Die beiden Bitmaps werden sozusagen &amp;#039;&amp;#039;on-the-fly&amp;#039;&amp;#039; ausgetauscht, wenn ein Icon selektiert oder unselektiert wird.&lt;br /&gt;
&lt;br /&gt;
Modernere Amiga-Oberflächen wie die [[ReAction GUI]] (AmigaOS 3.9 bis 4.1) oder das [[Magic User Interface|MUI]] (klassisches [[AmigaOS]], [[AROS (Betriebssystem)|AROS]] und [[MorphOS]]) verwenden weitere Möglichkeiten, Icons zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Alle modernen Amiga-ähnlichen Betriebssysteme ([[AmigaOS 4|AmigaOS 4.0/4.1]], [[MorphOS]] und AROS) sind in der Lage, rohe Bitmaps, IFF/ILBM- und [[Portable Network Graphics|PNG]]-Daten/Dateien als Icondaten zu nutzen.&lt;br /&gt;
&lt;br /&gt;
== Weitere dem AmigaOS bekannte ausführbare Formate ==&lt;br /&gt;
=== Klassisches AmigaOS ===&lt;br /&gt;
[[AmigaOS]] (bis 3.9) erkennt folgende weitere Formate.&lt;br /&gt;
&lt;br /&gt;
==== Hunk_Overlay ====&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Hunk_Overlay&amp;#039;&amp;#039;&amp;#039;-Typ ist einer der von Commodore erstellten Standard-Hunks. Er war dazu gedacht, Speichermangelprobleme zu lösen. Dieser Hunk implementiert eine Methode, Programme zu laden, die größer sind als die eigentliche Arbeitsspeichermenge im Betriebssystem.&lt;br /&gt;
&lt;br /&gt;
Bei dieser Methode wird eine Wurzelstruktur mit Referenzen auf kleinere Codefragmente/-module im Arbeitsspeicher gehalten, wobei die eigentlichen Codefragmente nur bei Bedarf in den Arbeitsspeicher geladen werden, also praktisch eine Art der &amp;#039;&amp;#039;Overlay-Programmierung&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Dieser Designansatz war relativ clever, aber in der Praxis war dessen Nutzung so umständlich, dass diese Methode nur sehr selten eingesetzt wurde. Die meisten Entwickler ignorierten diese Möglichkeit schlichtweg.&lt;br /&gt;
&lt;br /&gt;
==== Extended Hunk Format (EHF) ====&lt;br /&gt;
1997 führte der Hardware-Hersteller [[Phase5]] [[PowerPC]]-basierte Beschleunigerkarten ein. Da das AmigaOS aber nach wie vor auf 680x0-Prozessoren lief, wurde der PowerPC-Prozessor wie eine Art CoProzessor genutzt. Daraus resultierte, dass beide Prozessoren immer abwechselnd auf den Arbeitsspeicher zugreifen mussten (Task-/Contextswitching) und das System dabei stark ausgebremst wurde. Um dem Problem Herr zu werden, präsentierte der AmigaOS-3.5/3.9-Entwickler Haage&amp;amp;Partner eine andere Möglichkeit, um Daten und Code mit der PowerPC-Hardware auszutauschen. Die&lt;br /&gt;
Möglichkeit bestand aus einem neuen PowerPC-API/Kernel names [[WarpUP|WarpOS/WarpUP]], der sich durch die Erweiterung des Amiga-Hunk-Formates systemkonform verhielt. Dieses neue Format nennt sich &amp;#039;&amp;#039;Extended Hunk Format&amp;#039;&amp;#039; (EHF) und erweitert die klassischen Amiga-Hunks um den Typ &amp;#039;&amp;#039;HUNK_PPC_CODE&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==== ELF ====&lt;br /&gt;
Der Hardware-Hersteller [[Phase5]] führte zusammen mit seiner PowerPC-Hardware das aus der Unixwelt bekannte ELF-Format ein (Bestandteil der PowerPC-API/Kernel [[PowerUP]]). Das Format wurde später von AmigaOS 4.x, MorphOS und AROS übernommen. Eine ELF-Emulation wurde später&lt;br /&gt;
durch Dritte auch in WarpOS/WarpUP integriert.&lt;br /&gt;
&lt;br /&gt;
=== AmigaOS 4.0 und MorphOS ===&lt;br /&gt;
AmigaOS 4.x und MorphOS können das ELF-Format nativ auf der Hardware ausführen, da beide Betriebssysteme nativ auf PowerPC-Hardware laufen. Beide sind ebenfalls in der Lage, EHF nativ auszuführen. MorphOS ist zusätzlich in der Lage, das ELF Format für die m68k/PowerPC-Beschleunigerkarten ([[PowerUP]]) für die klassischen Amigas auszuführen.&lt;br /&gt;
&lt;br /&gt;
Beide Betriebssysteme sind zusätzlich in der Lage, das klassische Amiga-Hunk-Format in einer Emulationsschicht auszuführen. Dabei wird nahezu die vollständige AmigaOS-3.1-API emuliert. Dies wird durch eine JITM (Just In Time Machine) realisiert, die alle 68000-Instruktionen auf PowerPC-Instruktionen abbildet und dadurch eine recht hohe Emulationsgeschwindigkeit erreicht. Die JIT-Maschine unter AmigaOS 4.x heißt &amp;#039;&amp;#039;Petunia&amp;#039;&amp;#039; und die JIT-Maschine von MorphOS nennt sich &amp;#039;&amp;#039;Trance&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Referenzen ==&lt;br /&gt;
* {{cite book|author=Commodore-Amiga Inc.|title=The AmigaDOS Manual|publisher=Bantam Computer|year=1986|isbn=0-553-34294-0|url=https://archive.org/details/TheAmigaDOSUsersManual3In1Manual|language=en}}&lt;br /&gt;
* {{cite book|author=Commodore-Amiga Inc.|title=The AmigaDOS Manual Third Edition |publisher=Bantam Computer|year=1991|isbn=0-553-35403-5|url=https://archive.org/details/TheAmigaDOSUsersManual3In1Manual|language=en}}&lt;br /&gt;
* Amiga ROM Kernel Reference Manual, Includes and Autodocs (3rd edition; dark gray cover) Addison-Wesley, 1991, ISBN 0-201-56773-3&lt;br /&gt;
* Commodore Business Machines: 1989 Amiga Developers Conference Notes, Commodore, 1989. CATS part numbers: NOTES89 and NOTES89D&lt;br /&gt;
* Commodore Business Machines: V3.1 Amiga Developer Update Disk Set, Commodore, 1994. CATS part number: AMDEV3.1 (jetzt Bestandteil der &amp;#039;&amp;#039;The Developer CD&amp;#039;&amp;#039;)&lt;br /&gt;
* Commodore Business Machines: 1988 Amiga Developers Conference Notes Commodore, 1988. CATS part numbers: NOTES88 and NOTES88D&lt;br /&gt;
* Stephen Levy: Amiga Programmer&amp;#039;s Guide, Compute! Publications, 1986, ISBN 0-87455-028-9&lt;br /&gt;
* Eugene P. Mortimore: Amiga Programmer&amp;#039;s Handbook, Sybex, 1985, ISBN 0-89588-343-0&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://powerup.amigaworld.de/index.php?lang=de Amiga goes PowerUP] Inoffizielle PowerUP-Support-Website&lt;br /&gt;
* [http://www.amigahistory.co.uk/ppchistory.html Geschichte des PowerPC auf dem Amiga] (englisch)&lt;br /&gt;
* [http://www.haage-partner.de/amiga/storm/sc_tec_d.htm EHF Spezifikation]&lt;br /&gt;
* [http://www.haage-partner.de/ Haage&amp;amp;Partner]&lt;br /&gt;
* [http://www.amiga.com/ Amiga International] (englisch)&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Kategorie:AmigaOS]]&lt;br /&gt;
[[Kategorie:Binärformat für ausführbare Programme, Bibliotheken und/oder Objektcode]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Overstolzen</name></author>
	</entry>
</feed>