코드를 보다가 test eax,eax;
라는 것이 있는데
test 명령어는 두 값을 비교하는 것이라고 알고있는데..
test eax,eax;
하면 값이 똑같은걸 비교하기 때문에 비교 하나 마나 아닌가요?
test 의 결과로 어떤 일이 벌어지는지 알아보세요 flag set/clear 에 관심을 집중하시고요.
OTL
cmp는 한 값에서 다른 한 값을 뺄셈하고, test는 두 값을 AND합니다. 대신 이 두 명령은 계산한 값을 저장하지 않습니다. 플래그레지스터에만 그 흔적이 남습니다.
Written By the Black Knight of Destruction
test eax eax 자체가 비교 하나 마나 이냐고 물어보신 의도가... eax 값이 0 일 때를 생각 못하신게 아니신지요? 보통 Null check 할 때 많이 쓰입니다만...
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
test 의 결과로 어떤
test 의 결과로 어떤 일이 벌어지는지 알아보세요
flag set/clear 에 관심을 집중하시고요.
OTL
test는 두 값을
cmp는 한 값에서 다른 한 값을 뺄셈하고, test는 두 값을 AND합니다.
대신 이 두 명령은 계산한 값을 저장하지 않습니다. 플래그레지스터에만 그 흔적이 남습니다.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
아마도...
test eax eax 자체가 비교 하나 마나 이냐고 물어보신 의도가...
eax 값이 0 일 때를 생각 못하신게 아니신지요?
보통 Null check 할 때 많이 쓰입니다만...
댓글 달기