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
Membre
Dernière intervention
22 août 2010
10
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
Membre
Dernière intervention
22 août 2010
10
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
Membre
Dernière intervention
22 août 2010
10
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.