Bonsoir ,
Voilà , j'aimerai lancer un programme en asm par le biais d'un programme en C , parce que comme je débute je pourrais utiliser la bibliothèque standard du C , donc j'utilise MinGW pour gcc et nasm pour assembler et pour avoir un fichier objet .
Donc comme code j'ai :
[ASM] ( squelette vide , ça ne sert a rien de faire des trucs si je n'arrive pas a faire marché
![:p :p]()
)
%include "asm_io.inc"
segment .data
segment .bss
section .text
global _asm_main
_asm_main:
enter 0,0
pusha
popa
mov eax,0
leave
ret
[C]
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ret_status;
ret_status=_asm_main();
return ret_status;
}
donc avec ça , par étape :
-je compile le fichier main.c avec "gcc -c main.c" pour avoir un fichier main.o
-j'assemble le fichier asm avec "nasm -f win32 code.asm -o code.o
-et
à la fin je les lie avec "gcc -o main.o code.o asm_io.o"
et c'est la ou ça bloque j'ai un message d'erreur :
undefined reference to `_asm_main'
Je suis sous windows donc le problème peut venir de là , j'ai vu sur le net qu'il fallait utiliser WinMain@16 mais bon quand on compile le fichier c il y a une erreur avec le @ ..
PS: quand j'utilise ld directement pour faire un exécutable , le programme marche..(enfin il n'y a pas de message d'erreur)
PS2: j'ai bien mis tous le tralala dans le PATH windows..
Je trouve plein de tuto ...mais sous distrib linux..
Merci d'avance
'nuit