해결된 질문
작성
·
353
0
안녕하세요.
S324에서 질문 사항이 하나 있습니다!
teq 명령어에서 true 이면 Z=1이고,
tst 명령어에서는 true이면 Z=0이 된다고 말씀하셨는데,
이건 각 명령어의 규칙인 것인가요?
이전에는 두 인자를 비교할 때, 값이 true이면 Z = 1이 된다고 하셨던 것 같아서요.
무언가 제가 잘못 이해하고 있는 것 같기도 한데,
이 부분이 헷갈려서 질문 드립니다!
답변 1
1
안녕하세요. SeongJin Hong님!
teq와 tst의 연산 결과는 CORTEX 프로세서 내의 상태 Z (Zero) 플래그에 영향을 미칩니다.
teq 이 명령어는 두 피연산자를 XOR 연산한 결과로 Z 플래그를 설정합니다. XOR 연산은 두 피연산자가 동일하면 결과는 0이 됩니다. 따라서, teq는 두 피연산자가 같으면 Z 플래그를 1로 설정합니다.
또 다른 명령어 tst 이 명령어는 두 피연산자를 AND 연산한 결과로 Z 플래그를 설정합니다. AND 연산은 두 피연산자 중 하나라도 0이면 결과는 0이 됩니다. 따라서, tst는 두 피연산자의 AND 연산 결과가 0이면 Z 플래그를 1로 설정합니다.
결국, teq 명령어에서는 피연산자들이 같으면 Z=1이 되고, tst 명령어에서는 피연산자들의 AND 연산 결과가 0이면 Z=1이 됩니다.
그러나, 일반적으로 우리는 tst 명령어를 사용할 때 AND 연산 결과가 0이 아닌 경우를 '참'이라고 해석하기 때문에, 이 경우에는 Z=0이 됩니다.
"tst 명령어를 사용할 때 AND 연산 결과가 0이 아닌 경우를 '참'이라고 해석"하는 부분 때문에 제가 헷갈린 것이었군요!
쉽게 설명해주셔서 감사합니다!