Intégrer de l'assembleur dans du C.

alekine Messages postés 13 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 août 2004 - 19 août 2004 à 12:08
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 19 août 2004 à 14:26
Bonjour,
voilà déjà quelques minute que je cherche du code et un tutorial sur l'intégration d'asm dans du code C.
Que ce soit sur le site ou google, je n'ai encore rien trouvé a part qu'il faut placer un "__asm" pour l'intégration.

Si qq'un avait un lien sur un tutorial ou un code bien commenté, merci !

14 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 12:13
alekine, tt depend ton ide :

sous VC ++ = __asm { mov, push...etc }
sous DevC++ = _asm {"mov, push...Etc"} (ptet ke le underline ny est pas, essaye.)

++
0
alekine Messages postés 13 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 août 2004
19 août 2004 à 12:19
Merci.
Ah oui pardon, j'utilise vc++.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 12:22
Si tu veux faire une fonction 100% asm, ki ne soit aps modifié par le compilo, declare ta fonction precedé de _declspec(naked) :

_declspec(naked) int mafonction()

Voila ++
0
alekine Messages postés 13 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 août 2004
19 août 2004 à 12:25
Merci.
A vrai dire je cherche plutôt un tutorial parceque là ca ne me dit rien ... dsl ;)
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 août 2004 à 12:28
Y en a plein mes sources.

ciao...
BruNews, Admin CS, MVP Visual C++
0
alekine Messages postés 13 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 août 2004
19 août 2004 à 12:40
Merci BruNews mais je veux intégrer de l'asm dans du C (DOS) pas dans du C++ et toutes tes sources sont en C++ Win32 il me semble...
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 12:45
alekine > pas du tt, c du C ki fait le Brunews si jme trompe pas, sauf kelk rares cas, et que ce soit win32 n'est pas un pb, ca marche autant pour mode console que pour application win32.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 août 2004 à 12:49
Faut avouer que je suis plutot -- que ++.

ciao...
BruNews, Admin CS, MVP Visual C++
0
alekine Messages postés 13 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 août 2004
19 août 2004 à 13:00
.. je cherche un truc en dos très simple pas en win32.
Un code avec un "main" pas un "winmain".
Enfin je m'exprime p etre pas comme il faut ...
Brunews -> tes sources sont d'un niveau trop élevé pour moi ...
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 13:58
Voila le plus simple kon puisse faire :

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char **argv)
{
char sz[] = "%s";
char szcoucou[] = "coucou\n";

__asm {
lea ecx, szcoucou
lea eax, sz
push ecx
push eax
call dword ptr printf
}

system("PAUSE");

return 0;
}

Si ta besoin d'aide en asm inline, demande moi, je debute, ca peut etre intéressant de s'entraider.

++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 août 2004 à 14:08
ACHTUNG,
sur un prog plus long, c'est CRASH a tout coup.
printf n'est pas __stdcall car nbr params est indetermine, faut donc relever esp de nbrArgs*4 apres son appel.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 14:11
oups, dsl, comme koi c pas si simple. C pour ca ke ta leur ca plantait...Merci, fo donc ajouter add esp, 8 apres l'appel ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 août 2004 à 14:21
ben me semble que oui.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
19 août 2004 à 14:26
Bon dsl alekine, voila le bon code :

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char **argv)
{
char sz[] = "%s";
char szcoucou[] = "coucou\n";

__asm {
lea ecx, szcoucou
lea eax, sz
push ecx
push eax
call dword ptr printf
add esp, 8
}

system("PAUSE");

return 0;
}

++
0
Rejoignez-nous