2011-04-02 3 views
0

À l'universisty j'ai un projet de programmation assembleur pour créer une application de programmation de haut niveau, qui utilisera du code assembleur comme bibliothèque externe. Donc, mon programme en Objective-C/Cocoa chargerait l'image, lirait toutes les couleurs des pixels, puis passerait ces couleurs à l'assembleur program/code/library qui ferait quelques opérations dessus puis retournerait au programme obj-c principal . Je suis conscient que sur Windows/Visual Studio, c'est facile à faire, mais comme je ne travaille que sur Mac, je veux le faire sur Mac.Création et utilisation de la bibliothèque assembleur dans xcode

Veuillez me donner quelques instructions. merci!

Damian

+0

Dans quelle partie rencontrez-vous des difficultés? La pièce Xcode du puzzle devrait être facile - il suffit de créer un projet de "bibliothèque statique" et d'y ajouter vos fichiers .S. –

+0

Mon problème est de savoir comment charger la procédure de fichier .asm et de l'assembleur et de l'utiliser dans un code normal d'objectif-c de haut niveau dans xcode. – DamianD

Répondre

1

L'extension habituelle de nom de fichier (hérité de * nix) pour Mac OS X est .s, pas .asm. Il suffit de l'ajouter à votre projet Xcode, et Xcode sait comment créer & le lier à votre bibliothèque.

Uli Kusterer's tutorial est un bon début pour écrire l'assembleur avec Xcode - bien que les commentaires soient encapsulés de manière maladroite. Pour gérer les arguments transmis et renvoyer des valeurs au code C ou Objective-C, votre fonction d'assembleur doit suivre la Mac OS X ABI, qui détaille comment les fonctions C utilisent le cadre et les registres de la pile.

+0

Ok, donc après avoir créé et ajouté le fichier .s à mon projet xcode, j'utilise #include pour inclure le fichier .s? Et puis, en supposant que dans le fichier .s j'ai une fonction appelée 'myHelloWorld:' comment puis-je appeler cette fonction avec des paramètres dans obj-c ?? – DamianD

+0

Dans votre fichier .s, déclarez votre fonction en tant que .globl, et écrivez-la afin qu'elle puisse gérer les arguments transmis depuis C, comme documenté dans la référence ABI d'Apple - J'ai ajouté un lien à ce qui précède. Ce que vous #include dans votre C (ou ObjC) est un fichier d'en-tête avec la déclaration du prototype, pas le fichier .s. –

Questions connexes