Forum » » OS4 toutes plateformes confondues » » Appel système en assembleur PPC sous OS4
Posté : 15-01-2008 19:21
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