Appel fonction assembleur en C
Salut !
Tout d'abord un grand bravo pour ce site très complet et ce forum très actif !
Voici mon problème : j'ai une fichier C et un fichier assembleur. Dans le premier un appel à une fonction, et dans l'autre le code de la fonction.
Voici mon fichier C :
Code:
1 2 3 4 5 6 7 8
| extern void MyFunc(void);
int main() {
MyFunc();
return 0;
} |
et mon fichier assembleur ressemble à ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| BITS 32
GLOBAL _MyFunc
_MyFunc:
push ebp
pusha
; ...
; Ici le code de la fonction
; ...
popa
pop ebp
ret |
Je compile chaque fichier en .o (avec GCC et NASM), puis j'essaye de linker le tout en fichier binaire avec LD, et là il me sort "undefined reference to _MyFunc"
J'ai déjà pourtant revérifié le code des centaines de fois, la déclaration de la fonction aussi bien dans le fichier C qu'en assembleur, rien n'y fait. Je sais que l'on doit mettre un _ (underscore) devant le nom en asm, mais que je le fasse ou non ca foire !
Aidez-moi svp je suis completement bloque il faut que je termine cette partie du prog pour faire la suite ...
Merci beaucoup
Arnaud