assembly 에서요.. TEST 명령어에 대해서 질문이 있습니다.

nexusz99의 이미지

코드를 보다가
test eax,eax;

라는 것이 있는데

test 명령어는 두 값을 비교하는 것이라고 알고있는데..

test eax,eax;

하면 값이 똑같은걸 비교하기 때문에 비교 하나 마나 아닌가요?

bushi의 이미지

test 의 결과로 어떤 일이 벌어지는지 알아보세요
flag set/clear 에 관심을 집중하시고요.

OTL

Necromancer의 이미지

cmp는 한 값에서 다른 한 값을 뺄셈하고, test는 두 값을 AND합니다.
대신 이 두 명령은 계산한 값을 저장하지 않습니다. 플래그레지스터에만 그 흔적이 남습니다.

Written By the Black Knight of Destruction

Written By the Black Knight of Destruction

kikiwaka의 이미지

test eax eax 자체가 비교 하나 마나 이냐고 물어보신 의도가...
eax 값이 0 일 때를 생각 못하신게 아니신지요?
보통 Null check 할 때 많이 쓰입니다만...