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