Ca doit pas être bien compliqué!

cs_david23 Messages postés 3 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 3 décembre 2002 - 27 nov. 2002 à 19:14
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003 - 3 déc. 2002 à 11:25
Quelqu'un pourrait-il m'expliquer la marche à suivre pour appeler un routine en assembleur depuis un code en C ou C++?
(syntaxe, passage de paramètre...)
Un petit exemple simple serait bienvenu.
(J'utilise gcc et nasm sous linux)

5 réponses

gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
27 nov. 2002 à 23:37
je travail sous win32 uniquement donc ca va etre dur de repondre mais pour le standard C les appels de fonctions de tte facon ont tjrs la mm syntaxe, les caracteristiques sont :
- passage des arguments de droite a gauche
- c la fonction appelante qui vide la pile
- ajout d'un underscore devant le nom des fonctions
- respect de la casse

voila c tt ce ke je sait ^^

pr un exemple je crois ke ca sera pas possible vu quon a pas le mm environnement
0
cs_david23 Messages postés 3 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 3 décembre 2002
29 nov. 2002 à 19:01
Ok. je vais être plus précis.
Je travaille habituellement uniquement en C++. Je débute en assembleur. Ce que je veux faire est appeler une routine assembleur depuis un programme C++.
Je compile le code C++ et obtient un fichier obfet 'machin.o'
J'assemble la routine en assembleur avec nasm -f elf ... et j'obtien un autre fichier objet 'routinetruc.o' J'aimerais ensuite pouvoir les linker ensemble (g++ -o executable routinetruc.o machin.o)
Evidement ça marche pas tout seul car le linker ne sais pas que la fonction que j'appelle depuis le C++ est codeé dans 'routinetruc.o'
Le seul truc qui me manque, c'est comment je déclare dans mon code assembleur ce lien.

J'spere que j'ai été clair .....
0
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
29 nov. 2002 à 21:51
fo declarer tes routines public

public routine
0
cs_david23 Messages postés 3 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 3 décembre 2002
3 déc. 2002 à 11:09
j'ai pas réussi avec public (mauvaise syntaxe pour nasm ou je sais pas koi) mais avec GLOBAL, c'est ok! Merci.
Il me reste maintenant à en apprendre plus sur l'assembleur pour coder cette routine (string matching)...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
3 déc. 2002 à 11:25
dsl pr la mauvaise info, j'utilise MASM dc je savais pas ;)
0
Rejoignez-nous