Bonjour,
donc voila, je cherche a faire un programme mélangeant asm et C. Pour se faire je transforme mon code asm en libraiie .obj qui devrait pourvoir se linker avec dev c++ a mon programme en c.
1) j'ai codé mon programme asm en fichier .asm ( logic). avec un .bat j'ai récupéré le .obj de on fichier .asm.
2) j'ai codé mon programme c sous dev c++.
3) j'ai créé un fichier .hpp pour pouvoir linker mes 2 fichier.
le problème c'est que j'ai beau faire sous dev c++: clic droit sur le projet/option du projet/paramètre et mettre dans éditeur de lien le chemin pour aller chercher mon fichier .obj précédemment créé, j’obtiens l'erreur suivante :
ressources :5 U:\gg\projet\main.c asm.hpp: No such file or directory.
U:\gg\projet\Makefile.win [Build Error] [main.o] Error 1
programme en c sous dev c++ :
programme en asm du fichier .asm ( ce fichier est nommé très originalement asm.asm ^^) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #include <cstdlib> #include <iostream> #include <windows.h> #include <unistd.h> #include <asm.hpp> // header de la librairie char FileVide () ; int IdCGFileDesProc; char ZF; unsigned char FDP[10][10],QES[10][10]; void funct_FileVide(int IdCGFileDesProc); int main(void) { IdCGFileDesProc=10; funct_FileVide(IdCGFileDesProc); FDP[8][0]=10; FDP[8][1]=12; FileVide () ; printf("%d",ZF); Sleep(10000); } char FileVide (void) { if(FDP[8][0]==IdCGFileDesProc) { if(FDP[8][0]==FDP[8][1]) { ZF=1; } else { ZF=0; } } else { if(QES[8][0]==QES[8][1]) { ZF=1; } else { ZF=0; } } return ZF ; }
Code asm : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ; asm.asm .386 .MODEL flat,stdcall funct PROTO near C,IdCGFileDesProc:DWORD; prototype assembleur .code funct PROC near C, IdCGFileDesProc:DWORD mov IdCGFileDesProc,00000000 ret funct ENDP END
et enfin mon fichier qui fais le lien entre les deux ( nommé ne fois de plus asm.hpp ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // asm.hpp extern "C" { void funct_FileVide(int IdCGFileDesProc); }
Je suis conscient que ce programme ne fait pas grand chose ... mais c'est juste un teste pour voir si sa marche car un code beaucoup plus conséquent attend derrière ^^.
je reste à votre disposition si vous avez des questions à me poser
merci d'avance de vos réponses
Partager