[클라우드 바우처] 80% 할인된 금액으로 드림핵 엔터프라이즈를 도입해 보세요. 자세히 알아보기
왜 레지스터를 0으로 초기화 할 때 xor을 이용하나요?

mov eax, 0
sub eax, eax
...
등등 여러가지가 있다고 생각하는데, 왜 굳이 xor eax,eax와 같이 초기화를 수행하는지 궁금합니다.

#시스템해킹 #shellcode
작성자 정보
답변 1
avatar
김진우
대표 업적 없음

우리는 어셈블리어를 mov eax, 0등으로 표기하지만 실제로 컴퓨터 내에서는 opcode라는 숫자코드로 표기합니다. 제가 알기로는 xor eax,eax같은 xor 명령어의 opcode 길이가 다른 opcode보다 짧은 것으로 알고 있습니다. 그렇기 때문에 mov 명령어를 쓰는 것보다 xor 명령어를 쓰는 것이 바이너리 사이즈가 절약되고 최적화에도 어느정도 도움이 될 것이라고 추측할 수 있겠네요.

정확한 이유는 저도 잘 모르겠습니다..ㅎ!

2022.03.10. 16:34
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기