Intégrer une procédure Assembleur dans un programme C

Intégrer une procédure Assembleur dans un programme C - Programmation

Marsh Posté le 23-02-2001 à 20:50:24    

Bonjour,
Dernièrement j'ai reçu un dossier en Assembleur dans lequel je devais ecrire une procédure et non pas une MACRO avec laquelle je devais l'intégrer dans un programme C et faire appel de cette procédure dans ce programme C. Cependant je n'ai trouvé aucune informations concernant cette manipulation. On m'a dit qu'il fallait déclarer dans le code source du fichier ASM la procédure en PUBLIC et faire appel de cette procédure en C en EXTERN. Mais pour l'instant cela ne veut pas marcher du tout. POUVEZ VOUS M'AIDER??? Je suis totalement bloqué !!! Je vous remercie d'avance et espère que vous avez réponse à ma question. A bientôt.

Reply

Marsh Posté le 23-02-2001 à 20:50:24   

Reply

Marsh Posté le 23-02-2001 à 21:12:32    

Dans ton fichier asm tu déclares effectivement ta fonction en public :
PUBLIC TaFonction
Et dans le C
extern void TaFonction(int, int, ...)
 
Par contre tu seras peut-être amené à changer la déclaration de la fonction dans le fichier asm en fonction du format d'exportation utilisé par ton compilateur. Pour t'en assurer, édite une lib générée avec ce compilo dans un éditeur hexa, et regarde s'il ajoute des caractères au nom de la fonction (qui apparaît explicitement sous forme d'une chaîne de caractère).
Watcom par exemple ajoute un "_" après le nom, Visual l'exporte tel quel il me semble ...

Reply

Marsh Posté le 23-02-2001 à 21:20:55    

Ok c'est vraiment génial. Et je suppose que je dois linker en même temps l'obj de ma procédure avec l'obj de mon programme C.
ENCORE UN GRAND MERCI.

Reply

Marsh Posté le 23-02-2001 à 21:25:44    

dans ton C
 
extern ma_fonction(int a);
 
dans ton asm
 
ma_fonction: ...

Reply

Marsh Posté le 23-02-2001 à 21:50:57    

z51 a écrit a écrit :

Dans ton fichier asm tu déclares effectivement ta fonction en public :
PUBLIC TaFonction
Et dans le C
extern void TaFonction(int, int, ...)
 
Par contre tu seras peut-être amené à changer la déclaration de la fonction dans le fichier asm en fonction du format d'exportation utilisé par ton compilateur. Pour t'en assurer, édite une lib générée avec ce compilo dans un éditeur hexa, et regarde s'il ajoute des caractères au nom de la fonction (qui apparaît explicitement sous forme d'une chaîne de caractère).
Watcom par exemple ajoute un "_" après le nom, Visual l'exporte tel quel il me semble ...




 
Ok c'est vraiment génial. Et je suppose que je dois linker en même temps l'obj de ma procédure avec l'obj de mon programme C.  
ENCORE UN GRAND MERCI.

Reply

Marsh Posté le 23-02-2001 à 22:20:24    

oui. Pas de quoi ! à+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed