Accueil > Forum > > > > problèmes avec le registre ESP (C++ et ASM)
problèmes avec le registre ESP (C++ et ASM)
mercredi 4 mai 2005 à 04:53:52 |
problèmes avec le registre ESP (C++ et ASM)

DeadlyPredator
|
Bonjour, je voudrais créer une fonction permettant d'appeller des APIs sans avoir besoins de déclarer leur prototype ni en utilisant les .lib. Lorsque j'éxécute mon code, ma msgbox apparait, parfaite. Après que j'appuie sur OK, erreur. Ça serait le registre ESP le problème. j'ai lu qu'il y a des registres qu'il fallait sauver et restaurer mais comme mes connaissances en asm sont très limitées, je ne sais pas comment faire.
int _stdcall StdCallAPI(LPCSTR dllName, LPCSTR APIName,int Params[], int ParamsCount) { HMODULE hLib; FARPROC pProc=0; int iFlag=MB_ICONASTERISK+MB_YESNO; int RetVal; char* texte="allo"; hLib=LoadLibrary("User32.dll"/*dllName*/); pProc=GetProcAddress(hLib,"MessageBoxA"/*APIName*/);
__asm { //paramètres pour l'api [ mov eax,20 push eax
mov eax,texte push eax
mov eax,texte push eax
mov eax,0 push eax // ]
call pProc //appel de l'api
mov RetVal,eax //envoie de la valeur dans la variable RetVal
// nettoyage [ pop ebx//(nécéssaire?)
pop ebx pop ebx pop ebx pop ebx // ]
} FreeLibrary(hLib); return RetVal; }
Merci
VIVE LE QUÉBEC! Essayez ça
Dim l As Long: Do Until l = -1: l = l + 1: Loop
| p.s.Si vous l'avez essayé, vous allez attendre longtemps ...
|
|
mercredi 4 mai 2005 à 07:28:36 |
Re : problèmes avec le registre ESP (C++ et ASM)

gnoofy120
|
Salut, Pour les Api win32 il me semble que c'est la fonction qui nettoie la pile, dans ton cas tu ne dois pas avoir de pop après le call. D'une manière générale si tu fais ce genre de bricolage utilises ton debugger et surveilles la valeur des registres.
|
|
mercredi 4 mai 2005 à 09:08:54 |
Re : problèmes avec le registre ESP (C++ et ASM)

ymca2003
|
Pour les fonctions de l'API, il ne faut pas nettoyer la pile après l'appel (__stdcall). C'est la fonction appelée qui s'en charge et donc il faut s'assurer d'empiler le bon nombre de paramètres.
|
|
mercredi 4 mai 2005 à 09:15:24 |
Re : problèmes avec le registre ESP (C++ et ASM)

AlexMAN
|
Si tu ne 'pop' pas les registres, pourquoi les restaures tu ?
__asm { //paramètres pour l'api [ mov eax,20 push eax
mov eax,texte push eax
mov eax,texte push eax
mov eax,0 push eax call pProc //appel de l'api
mov RetVal,eax //envoie de la valeur dans la variable RetVal
}
Ca devrait marcher correctement. Comme l'a dit gnoofy, les API sont 'stdcall', cela signifie que les parametres que tu empiles vont etre depilés par la fonction. En ASM, seuls 3 registres n'ont pas besoin d'etre sauvegardé (uniquement si tu les utilises) : les registres EAX, ECX et EDX. Tous les autres doivent etre empilés au debut de la fonction et depilés en fin.
Voila, si tu veux plus de renseignement, n'hesite pas. Au fait, est ce que tu vois 'texte' dans la MessageBox() ?
+2(p - n)
|
|
mercredi 4 mai 2005 à 09:18:48 |
Re : problèmes avec le registre ESP (C++ et ASM)

AlexMAN
|
Erratum 1ere ligne : Si tu ne 'push' pas les registres, pourquoi les restaures tu ?
+2(p - n)
|
|
mercredi 4 mai 2005 à 13:46:31 |
Re : problèmes avec le registre ESP (C++ et ASM)
|
mercredi 4 mai 2005 à 21:01:11 |
Re : problèmes avec le registre ESP (C++ et ASM)

DeadlyPredator
|
Merci, je vais essayer ça. Est-ce que il y aurait moyer de faire genre: pour chaque paramètre { _asm { mov eax,paramètre[index] push eax } } _asm { call api mov retour,eax } ??? Si oui, quel devrai être le type de données du tableau? void*? int? VIVE LE QUÉBEC! Essayez ça
Dim l As Long: Do Until l = -1: l = l + 1: Loop
| p.s.Si vous l'avez essayé, vous allez vraiment attendre longtemps ...
|
|
Cette discussion est classée dans : int, pop, mov, eax, ebx
Répondre à ce message
Sujets en rapport avec ce message
pk ca fonctionne pas [ par laulau10 ]
int i=1;do printf("coucou");whil(i=1);DLL int RotationX(void){ int SortieBX=0; _asm{ MOV AX,3; INT 0x33; MOV SortieBX,BX; ret; } ret
int 21h [ par GEDEON ]
Salut, j'aurais besoin d'aide pour appeler une interruption assembleur sousVisual C++......Tout mon code fonctionne sauf la ligne "int 21h"... Là j'ai
Debugage assembleur [ par crocejf2000 ]
Salut,Qq'un pourrai il peut etre m'aider, j'ai une méchante érreur et jmy connais pas trop en assembleur, Borland c++ 5 me renvoi ceci : Il s'arrete a
petit pb de pointer [ par mirlaine ]
en fait c tou simpleje cherche l 'équivalen à ca: LPCWSTR user LPBYTE *bufptr mov eax, [bufptr] mov eax, [eax] //LPUSER_INFO_0 mov eax, [e
Problème ac du inline asm [ par oceax ]
Bonjour,je suis débutant en c++ et n'y connais pas encore énormément gd chose...Sur mon dernier programme (un keygen pr crack me que j'ai créé par mes
ASM et C++ [ par sebastienbro ]
Bonjour, j'aimerais savoir ce qui ne vas pas dans le code suivant. J'ai une erreur "error C2400: inline assembler syntax error in 'opcode'; found 'con
PB avec de l'ASM dans VC++ 6 .... [ par Foub12 ]
Bonjour...Je programme sous VC++ 6 et j'ai trouvé sur Internet, la fonction suivante mais elle ne marche pas... Il compile parfaitement mais lors de l
optimiser un codes asm [ par sajid_morad ]
salut tout le monde , j ai une parti du code en c++, que j ai voulu optimiser , le l ai reécri en asm , mai ça donne pas grand chose, si quelqu un pou
Asm ou SM [ par Joky ]
Et oui on voit pas trop la différence entre ces 2 choses lol :) Donc je suis entrain de lire un Tuto sur l'asm avec des ptits exemples n'ayant pas de
[EXPERTS]optimisation du c/asm [ par MrdJack ]
Bonsoir, je suis en train de me renseigner sur le c et l'asm niveau vitesse d'execution. en detail je me demande comment créer un code en c pour que s
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|