Jump to content
Sign in to follow this  
Fernando Mercês

Instruções TEST x CMP

Recommended Posts

Fala galera!

Estamos no meio do curso de Eng. Reversa II, que tá rolando em São Paulo. Numa das análises de um binário de 32-bits surgiu novamente uma "comparação" com a instrução TEST, ao invés da CMP e novamente esqueci da diferença, mas achei um tópico num outro fórum que deixou claro e decidi escrever aqui pra nunca mais esquecer. rs

Acontece que a TEST faz um E bit-a-bit (bitwise AND) entre os operandos, o que é completamente da CMP que compara subtraindo-os. Pra entender melhor, suponha que EAX = 3 (11 em binário). Se fizermos:

TEST EAX, 3

O cálculo feito é um AND de 11 com 11, resultando em 11, mas este resultado é descartado. No entanto, as flags ZF, PF e SF são afetadas de acordo com o seguinte pseudo-código (retirei do manual da Intel):

59d1bf1ceeaaa_ScreenShot2017-10-02at01_21_38.png.e15619850ac0ac8b6996bdab636b93ae.png

A instrução que vimos estava assim:

TEST EAX, EAX

Como isso vai fazer um AND do valor de EAX com ele mesmo, a ZF vai ser setada somente se o valor de EAX for zero (todos os seus bits zerados). Então isso "dá no mesmo" que fazer:

CMP EAX, 0

É isso. Quis registrar aqui para usar como referência futura. Abraços e bons estudos!

Share this post


Link to post
Share on other sites

Fala pakito,

Vc mandou muito bem, só rolou um typo aqui:

"a ZF vai ser setada somente se o valor de EAX for zero (todos os seus bits zerados)"

Na verdade eh o resultado da operação de bitwise (que ele chamou de TEMP) que deve ser zero, e não o conteúdo do registrador EAX.

Abs,

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...