Récuperer valeur asm en C++

Résolu
S4T4N1QU3 Messages postés 6 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 août 2005 - 12 juil. 2005 à 00:57
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

7 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juil. 2005 à 18:45
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();
}
3
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:00
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
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
12 juil. 2005 à 08:56
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.
0
S4T4N1QU3 Messages postés 6 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 2 août 2005
12 juil. 2005 à 12:11
Merci, mais non... syntax error.... Je compile sous Dev-Cpp. Si ça peut aider.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juil. 2005 à 18:41
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 juil. 2005 à 19:36
C'est eax qui posait problème? ou le movl?
0
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
Aucune idée. Mais l'important, c'est qu ça marche merci pour tout.
0
Rejoignez-nous