Récuperer valeur asm en C++ [Résolu]

S4T4N1QU3 6 Messages postés mercredi 26 janvier 2005Date d'inscription 2 août 2005 Dernière intervention - 12 juil. 2005 à 00:57 - Dernière réponse : S4T4N1QU3 6 Messages postés mercredi 26 janvier 2005Date d'inscription 2 août 2005 Dernière intervention
- 12 juil. 2005 à 19:55
Bonsoir,



J'aimerais savoir comment récuperer EAX dans un cas comme celui ci



asm("MOVL %EAX, 5");



Merci beaucoup à celui ou cell qui m'aidera
Afficher la suite 

Votre réponse

7 réponses

vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 12 juil. 2005 à 18:45
+3
Utile
Voila, ca marche avec ebp, mais pas avec esp, je vois pas trop pourquoi...

#include

int f()
{
int i;
asm("mov $5, %eax"); // mettre 5 dans eax
asm("movl %eax, -4(%ebp)"); // mettre eax dans i
std::cout << i << std::endl;
}

int main()
{
f();
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de vecchio56
S4T4N1QU3 6 Messages postés mercredi 26 janvier 2005Date d'inscription 2 août 2005 Dernière intervention - 12 juil. 2005 à 19:00
+3
Utile
Merci pour le code, il ne fonctionnait pas trop mais j'ai trouvé un moyen de le faire fonctionner.

-------------------------------------------->8-cut-here-------------------------------

#include

#include <cstdio>



using namespace std;



int f()

{

int i;

asm("mov $5,%ebx"); // mettre 5 dans eax

asm("mov %ebx, -4(%ebp)"); // mettre eax dans i

cout << i << endl;

}



int main()

{

f();

system("PAUSE");

return 0;

}

----------------------------------------cut-here-8<-------------------------------

Là ça marche enfin, c'est génial merci
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de S4T4N1QU3
cs_AlexMAN 1537 Messages postés samedi 21 décembre 2002Date d'inscription 24 mai 2009 Dernière intervention - 12 juil. 2005 à 08:56
0
Utile
Il te faut faire pareil mais avec la variable qui contiendra eax (je ne connais pas cette syntaxe, mais tu devrais t'y retrouver) :

int iEAX;

__asm {
mov eax, 5
mov iEAX, eax
}

printf("%d", iEAX);

En sortie tu obtiendras 5.
Commenter la réponse de cs_AlexMAN
S4T4N1QU3 6 Messages postés mercredi 26 janvier 2005Date d'inscription 2 août 2005 Dernière intervention - 12 juil. 2005 à 12:11
0
Utile
Merci, mais non... syntax error.... Je compile sous Dev-Cpp. Si ça peut aider.
Commenter la réponse de S4T4N1QU3
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 12 juil. 2005 à 18:41
0
Utile
asm("MOVL %EAX, 5");

Je crois qu'on écrit plutot asm("MOVL $5, %eax"); d'après ce que j'ai vu: la source est à droite. Pour utiliser les variables locales, je pense que tu dois travailler directement avec %esp, car le nom des variables ne sera pas reconnu
Commenter la réponse de vecchio56
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 12 juil. 2005 à 19:36
0
Utile
C'est eax qui posait problème? ou le movl?
Commenter la réponse de vecchio56
S4T4N1QU3 6 Messages postés mercredi 26 janvier 2005Date d'inscription 2 août 2005 Dernière intervention - 12 juil. 2005 à 19:55
0
Utile
Aucune idée. Mais l'important, c'est qu ça marche merci pour tout.
Commenter la réponse de S4T4N1QU3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.