[MorphOS] générer des includes

5 sujets de 1 à 5 (sur un total de 5)

  • glames

      #5720

      Salut,

      Je cherche à utiliser la xadmaster.library dans mon jeu Wmup XXL. En allant télécharger les includes sur le site officiel, il semble qu’ils ne soient pas utilisables sous MorphOS.

      Je cherche donc à générer les includes.

      J’ai entendu parler de fd2pragma qui part d’un fichier FD?

      Est-ce que quelqu’un pourrait m’expliquer le principe général? Ce qu’est le fichier FD? Dois-je utiliser fd2prgma sous Mos?

      MErci!

      Fab1

        #95084

        Comme je t’avais dit chez niffo tu as le choix :

        1. utiliser le script perl fourni avec le sdk: cvinclude.pl. Il génèrera les ppcinlines/protos/stubs à partir des fichiers modèles génériques que sont les clib et fd (cvinclude.pl -h pour l’aide).

        2. utiliser fd2pragma en générant des protos/ppcinlines ou stubs compatibles morphos.

        Pour information, je rappelle qu’une library est principalement composée d’une table de pointeurs de fonctions, et une fonction est définie par son offset dans la table et les registres utilisés pour les paramètres/retour.

        Pour avoir un fonctionnement transparent en C, il faut d’une part avoir les prototypes de ces fonctions, et d’autre part linker avec un bout de code qui va bien sauter au bon endroit dans la table et passer les bons paramètres.

        Avec amigaos et ses multiples compilos, c’est plutôt bien fait, et il y a une partie générique qui définit ça : les fichiers fd et clib. Ils peuvent être utilisés pour générer

        les fichiers protos/ et les fichiers inline/ppcinline/stubs propres à chaque compilo ou presque.

        Rôle des différents fichiers :

        – les fichiers clib déclarent les prototypes des fonctions exposées par une library et les fichiers fd définissent l' »ABI » de ces fonctions (offset de la fonction, registres utilisés).

        – les fichiers protos sont ceux que l’utilisateur inclut pour avoir accès aux prototypes des fonctions de la library.

        – les fichiers inline/ppcinline sont des macros qui vont selon le compilo/os/target passer les arguments dans les registres attendus et sauter au bon endroit dans la table de fonctions de la library. Les stubs ont un rôle exactement identique mais sont des objets précompilés qu’on linke avec l’executable (c’est typiquement présent dans la libaboxstubs.a sous mos, et libamiga.a sous amigaos je crois). L’avantage des stubs est d’éviter de polluer l’espace de noms avec des macros (ce qui est parfois pratique pour les ports de logiciels qui s’amusent à utiliser les mêmes noms que des fonctions d’amigaos :)).

        glames

          #95085

          @fab,

          Merci pour le rappel :-) et l’explication complète du rôle de chaque fichier.

          Bye

          henes

            #95086

            Et pour utiliser cvinclude, c’est ici :-p

            glames

              #95087

              Merci Henes!

            5 sujets de 1 à 5 (sur un total de 5)

            • Vous devez être connecté pour répondre à ce sujet.

            Forums AmigaOS, MorphOS et AROS Développement [MorphOS] générer des includes

            Amiga Impact