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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
extern void MyFunc(void);
 
int main() {
 
    MyFunc();
    return 0;
 
}

et mon fichier assembleur ressemble à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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