gdb : voir l'état des flags ?

gdb : voir l'état des flags ? - ASM - Programmation

Marsh Posté le 20-05-2005 à 14:52:44    

Bonjour,
 
Je fais des essais en asm avec nasm sous Linux, j'ai trouvé comment voir le contenu des registre lors d'un breakpoint, mais est-il possible de voir l'état des flags ? (armé ou non)
 
merci

Reply

Marsh Posté le 20-05-2005 à 14:52:44   

Reply

Marsh Posté le 26-05-2005 à 11:55:01    


 
Soit tu fais un

Code :
  1. PUSHFD
  2. POP EAX


 
et tu testes eax ensuite, soit tu utilise LAHF, qui place dans AH les flags SF,ZF,AF,PF et CF de cette facon :  

AH <-- SF:ZF:0:AF:0:PF:1:CF


 
Sinon bien sûr il y a toutes les instructions de saut, mais j'imagine que ce n'est pas ce que tu cherches.

Reply

Marsh Posté le 26-05-2005 à 13:05:51    

parfait, j'avais pas pensé à copier l'état des flags sur la pile pour bidouiller, merci :)

Reply

Marsh Posté le 31-05-2005 à 00:50:34    

Excusez moi...
 

Citation :

PUSHFD  
POP EAX
 
et tu testes eax ensuite


 
Pourquoi ça marche ???
 
Ca voudrait dire que si je fais :
 
PUSH EBX
POP EAX
 
alors EAX = EBX
 
Ou bien ?

Reply

Marsh Posté le 31-05-2005 à 11:06:01    

theredled a écrit :


PUSH EBX
POP EAX
 
alors EAX = EBX
 
Ou bien ?


En effet  :D  
 
PUSH EBX, ca revient a faire

Code :
  1. DEC ESP
  2. MOV DWord Ptr [ESP], EBX


et POP EAX:

Code :
  1. MOV EAX, DWord Ptr [ESP]
  2. INC ESP


 
(A noter que ce n'est pas tout à fait équivalent puisque PUSH et POP ne sont pas limités au regsitres)

Reply

Marsh Posté le 31-05-2005 à 12:31:39    

Bonjour
push ebx est plutôt équivalent à  
sub esp, 4
mov [esp], ebx
pop eax est plutôt équivalent à
mov eax, [esp]
add esp, 4
sauf macro sur DEC ou INC le fait de déplacer le pointeur de pile d'un octet quand on déplace des mots de 4 octets risque d'avoir des effets surprenants.
à noter que le fait de mettre eax ou ebx sous entend que l'on manipule des 32 bits. Dans un assembleur évolué (nasm), il n'y a pas besoin de préciser la taille à enregistrer le (DWord Ptr)

Reply

Marsh Posté le 31-05-2005 à 13:14:42    

db__ a écrit :

Bonjour
push ebx est plutôt équivalent à  
sub esp, 4
mov [esp], ebx
pop eax est plutôt équivalent à
mov eax, [esp]
add esp, 4
sauf macro sur DEC ou INC le fait de déplacer le pointeur de pile d'un octet quand on déplace des mots de 4 octets risque d'avoir des effets surprenants.


heu.. ooops  :sweat: Ca m'apprendra à répondre à des questions au révéil moi :sleep:  
 

db__ a écrit :


à noter que le fait de mettre eax ou ebx sous entend que l'on manipule des 32 bits. Dans un assembleur évolué (nasm), il n'y a pas besoin de préciser la taille à enregistrer le (DWord Ptr)


 
Je précise toujours la taille par habitude.
En syntaxe RosAsm c'est obligatoire, et on gagne en lisibilité la plupart du temps.
Ceci dit c'est quand même plus léger:

Code :
  1. mov D$esp, ebx


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed