Voici une nouvelle version de l'open source miniGL 1.2 sur Aminet.
Sachant que le succès de l'Amiga à ses débuts était dû à une bonne partie de sa logithèque programmée en asm, retour donc aux fondamentaux maintenant avec pour objectif le passage total du code C de miniGL tout en assembleur 68k. Rien n'est prévu pour le PPC, ce CPU n'a plus aucun avenir de toutes les façons...
Si des codeurs veulent se joindre à moi, allez-y contactez-moi : attention, un niveau assez élevé est requis.
Bref, l'Amiga mérite du code de qualité, ras-le-bol des compilos C...
Bref, l'Amiga mérite du code de qualité, ras-le-bol des compilos C...
Voici les règles générales d'optimisations que je m'applique et que je recommande à tous :
- utiliser le moins d'instruction possible dans presque tous les cas. Rares exceptions pour les loops importantes,
- ne jamais utiliser les instructions manquantes des 040/060, c'est-à-dire celles émulées par la 68040.library et 68060.library,
- n'inliner que les petites sous-routines, jamais les moyennes ni les grandes,
- toujours utiliser les pipelines du 060 en ordonnant correctement les instructions entres elles,
- toujours préférer le mode PC relatif, jamais ou très rarement les adressages absolues,
- ne jamais pré-charger les datas dans les registres internes de façon à ce que le CPU utilise au mieux son datacache,
- toujours utiliser les six registres scratchs (d0, d1, a0, a1, fp0 et fp1) le plus judicieusement possible,
- passage des args par les registres plutôt que par la pile,
- utilisation des boucles le plus souvent possible.
Les sources d'Aminet ont été compilé avec gcc 2.95.3-4. La librairie est compatible avec gcc 3.4.0 et le dernier gcc 6.5.0b. J'ai déjà optimisé 4 petites routines :
- _GLPushMatrix : 72 octets économisés par rapport à gcc
- _GLPopMatrix : 54 octets économisés par rapport à gcc
- _TMA_Check : 24 octets économisés par rapport à gcc
- _TMA_Start : 22 octets économisés par rapport à gcc
Aucun commentaire:
Enregistrer un commentaire
Laissez vos commentaires ici :