Nächste Seite: FPU 68881, FPU 68882 Aufwärts: Systemspezifische Besonderheiten Vorherige Seite: Beispiele

##
Codegenerierung für höhere Prozessoren

Wie im Abschitt 2.4.2 beschrieben, kann man den Zielprozessor des kompilierten Codes auf der Kommandozeile angeben. Dies wird genutzt, um bestimmte Operationen so effektiv wie möglich zu kodieren. Da der so erzeugte Code nicht mehr auf jedem Amiga lauffähig ist, wird

1. für jede Art von CPU/FPU an den Namen des Objekt-Files eine andere Endung angehängt, die der Linker nutzt, um den bestmöglichen Code für ein Programm zusammenzustellen.
2. am Beginn des Modul-Codes eine ,,Fang-Instruktion`` eingefügt, die keine Wirkung hat, wenn der Code auf dem dafür bestimmten Prozessor gestartet wurde, aber auf einem ,,niedrigeren`` zu einem Guru, bzw. zum Requester ,,`Ungültige Instruktion``` führt. Dadurch soll verhindert werden, dass ein derartiges Programm Amok läuft und eventuell sogar Speicherinhalte zerstört.

Nachfolgend in Tabelle 5.4 eine Liste der Instruktionen, die der Compiler für die einzelnen Prozessoren zusätzlich nutzt, sowie die zugehörigen ,,Fang-Instruktionen`` und Endungen der Objekt-Dateien. Ein ,,höherer`` Prozessor nutzt selbstverständlich auch die Instruktionen der ,,niedrigeren``!

Tabelle: genutzte Instruktionen höherer Prozessoren
CPU | Instruktionen | Fang-Instr. | Endung
68000 | -- | -- | `.obj`
68010 | RTD #dist | MOVE CCR,D0 | `.ob1`
68020 | CHK.L #imm32 | TRAPF | `.ob2`
u. 68030 | TRAPcc u. EXTB.L Dn |  | `.ob3`
| MULx.L u. DIVx.L ea,Dn |  |
68040 | Grundrechenarten | FNOP | `.ob4`
u. 68881 | und Konvertierungen |  | `.ob8`

Unterabschnitte

- FPU 68881, FPU 68882 und CPU 68040

Nächste Seite: FPU 68881, FPU 68882 Aufwärts: Systemspezifische Besonderheiten Vorherige Seite: Beispiele