Registre IP

Pour discuter de l'assembleur
Anonyme

Registre IP

Message par Anonyme »

Comment connaître la valeur de ce registres ?

j'ai compris qu'on ne pouvais pas le manipulé , logique.
mais comment "pushé" sa valeur sur une pile manipulable ?
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Code : Tout sélectionner

JeSuisLaValeurActuelleDuRegistreEIP:
Debug "EIP = 0x0" + Hex(?JeSuisLaValeurActuelleDuRegistreEIP) + "h"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Et si tu ne veux pas de la petite Lulu, je te présente la grosse Léa:

Code : Tout sélectionner

Procedure GetEIP()
! Lea eax,[l_jesuislavaleuractuelleduregistreeip]
ProcedureReturn
EndProcedure

JeSuisLaValeurActuelleDuRegistreEIP:
Debug "EIP = 0x0" + Hex(?JeSuisLaValeurActuelleDuRegistreEIP) + "h"
Debug "EIP = 0x0" + Hex(GetEIP() ) + "h"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Sinon, il y a Berthes, mais là, faut que tu te décides!

Code : Tout sélectionner

Macro InitGetEIP
Declare.I GetEIP()
Define EIPDiffA.I
Define EIPDiffB.I
Global EIPDiff.I 
InitTest:
EIPDiffA = GetEIP()
EIPDiffB = ?InitTest
EIPDiff = EIPDiffA - EIPDiffB
EndMacro

InitGetEIP

Procedure.I GetEIP()
   ! pop eax
   ! push eax
   ! sub eax, [v_EIPDiff]
ProcedureReturn
EndProcedure




; Prog



AddressAuPifPourTester:
A = GetEIP()
Debug A
Debug ?AddressAuPifPourTester
tonton
Messages : 315
Inscription : mar. 26/avr./2005 15:19

Message par tonton »

Je n' jamais utilisé ce registre, que je trouve totalement inutile
y a d autre moyen pour savoir la position du programme

tu peux "pusher" un label et lire son contenu
l' instruction "lea" aussi

bwai bon!! je ne sais pas ce que tu veux faire avec EIP!!
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Ho le râleur d'élite! "Et gnagna jamais et gnagna totalement inutile!"

Ben oui que c'est inutile! Parce qu'on exécute son programme et qu'on s'en branle du reste! Mais sa question à Cpl.Bator elle est loin d'être con. S'il ne connait pas l'Asm ça n'est pas plus mal qu'il se pose des questions sur le registre qui joue un rôle crucial dans l'exécution de la moindre opération.

C'est un joli doute conceptuel de débutant en Asm! Ne l'aggresse pas: il ne fait que découvrir son "core"! ça n'est pas sale :D

Maintenant, s'il a d'autres questions, je ferais comme dans "Question pour un champion", je n'appuierai pas sur le buzzer et je te laisserai la main! Tu auras le plaisir de lui présenter une ou plusieurs des copines à Lea!! (AAA!!!)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

On peut le manipuler, mais c'est "pour les experts" ;)
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

Bein, ça peut être utile indirectement ...

Tu call un sous programme: ca empile eid et ensuite tu push une adresse et tu ret ça t'envoie à cette adresse.... Puis tu n'oublie pas de dépiler l'adresse initiale d'eid pour éviter les embrouilles...

bon ok, ça ne sert à rien :mrgreen:

ha, si, peut être pour perdre un amateur qui essaye de reverser ton code :roll: (pis encore, meme pas sûr)
Anonyme

Message par Anonyme »

Merci messieurs.

ton code est parfait Olivier! :wink:
Répondre