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

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

7 réponses

Meilleure réponse
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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 199 internautes nous ont dit merci ce mois-ci

Commenter la réponse de vecchio56
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
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 199 internautes nous ont dit merci ce mois-ci

Commenter la réponse de S4T4N1QU3
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
1
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
Statut
Membre
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
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Statut
Membre
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