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

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

7 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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();
}
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 août 2005

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
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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.
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 août 2005

Merci, mais non... syntax error.... Je compile sous Dev-Cpp. Si ça peut aider.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
C'est eax qui posait problème? ou le movl?
Messages postés
6
Date d'inscription
mercredi 26 janvier 2005
Statut
Membre
Dernière intervention
2 août 2005

Aucune idée. Mais l'important, c'est qu ça marche merci pour tout.