website logo
Auteur
avatar
corto

Forum » » OS4 toutes plateformes confondues » » Appel système en assembleur PPC sous OS4


Posté : 15-01-2008 19:21 icone du post

Salut

Ca y est, j'ai pris le temps de regarder de plus près ce sujet qui m'intéresse aussi.

Pour voir ce que donne un hello en assembleur ou comment sont faits les appels systèmes, il suffit de faire le prog en C correspondant et "gcc -O2 -S source.c" donne le code assembleur (ou "vc -O2 -S source.c", ça peut être intéressant de comparer).

Sur OS4, les appels systèmes sont faits comme un appel C classique :
- registres dans r3, r4, r5, ...
- saut avec sauvegarde de l'adresse dans le registre lr

Donc pour un OpenLibrary("dos.library", 50), on a :
- dans r3 l'adresse de l'interface IExec
- dans r4 l'adresse de la cha?ne
- dans r5 la version

Pour l'appel lui-même :
- gcc utilise le registre ctr dans lequel il met l'adresse de la fonction chargé avec un offset par rapport à IExec, puis appelle "bctrl" (saut à l'adresse contenue dans ctr et met l'adresse de la prochaine instruction dans lr)
- vbcc utilise le registre lr directement avec là aussi l'adresse de la fonction et qu'il appelle avec "blrl" (saut à l'adresse contenue dans lr et en même temps met dans lr l'adresse de la prochaine instruction)

Voilà ce que j'en ai compris. MorphOS utilise quant à lui un wrapper, passant les arguments dans les pseudo-registres 68k.

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=124&forum=6