samedi 16 mai 2020

miniGL 1.21

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...
  
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 :
  1. _GLPushMatrix : 72 octets économisés par rapport à gcc
  2. _GLPopMatrix : 54 octets économisés par rapport à gcc
  3. _TMA_Check : 24 octets économisés par rapport à gcc
  4. _TMA_Start : 22 octets économisés par rapport à gcc
  
Notez que je recherche les sources de la version précédente à la 1.2 (peut-être nommée 1.15 ?) ayant servit pour la compilation du jeu commercial bien connu Quake2.

Sources et librairies compilées disponibles ici !
     

Aucun commentaire:

Enregistrer un commentaire

Laissez vos commentaires ici :