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

Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
2 août 2005
- - Dernière réponse : S4T4N1QU3
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
2 août 2005
- 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

Meilleure réponse
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
3
Merci
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();
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de vecchio56
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
2 août 2005
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de S4T4N1QU3
Messages postés
1537
Date d'inscription
samedi 21 décembre 2002
Dernière intervention
24 mai 2009
0
Merci
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
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
2 août 2005
0
Merci
Merci, mais non... syntax error.... Je compile sous Dev-Cpp. Si ça peut aider.
Commenter la réponse de S4T4N1QU3
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
0
Merci
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
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Dernière intervention
22 août 2010
0
Merci
C'est eax qui posait problème? ou le movl?
Commenter la réponse de vecchio56
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Dernière intervention
2 août 2005
0
Merci
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.