next up previous
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
next up previous
Nächste Seite: FPU 68881, FPU 68882 Aufwärts: Systemspezifische Besonderheiten Vorherige Seite: Beispiele
Claudio Nieder 2000-11-12