Haekt‘s log

[ASM] TEST EAX, EAX 왜 쓰는걸까? 본문

Reversing

[ASM] TEST EAX, EAX 왜 쓰는걸까?

Haekt 2022. 9. 20. 22:50

- TEST EAX, EAX  왜 쓰는걸까?

 

TEST 는 비교 AND 연산을 해 주는 역할이라고 이해하고 있었다. 

 

그럼 EAX, EAX는 같은 것을 비교하는 것이므로 항상 참만 나오는게 아닌가? 하는 의문이 들었다. 

 

결론부터 말하자면, TEST EAX, EAX 는 EAX에 값이 들어있는지 확인하기 위한 부분이다

 


- 설명 

 

 

TEST 는 1 피연산자와 2 피연산자를 AND 연산하여 EAX 에 값이 있으면 참을 내놓는다. 

 

AND 연산은 두 피연산자가 참으로 대응될 때에만 참이 나오기 때문에, 하나라도 0 이 있다면 거짓을 내놓게 된다. 

 

TEST EAX, EAX 는 두 피연산자가 동일하므로, EAX 에 값이 없을 경우 거짓이 나오게 되는 것이다. 

 

 

 

TEST 는 거짓( 0 ) 이 나올경우 ZF ( zero flag ) 를 1 로 설정시키는데,

이는 JE , JZ 와 같은 분기문을 만날때 점프시키는 역할을 하게 된다.

Comments