완료됨
push rax 할 때
rax에 문자열을 넣고 rax를 push 하잖아요, push 문자열 하지 않고 rax에 담아서 push하는 이유가 있나요?
#시스템_해킹
#공격기법
작성자 정보
답변
1
wyv3rn
무플 방지 위원회장
음 이런저런 글을 조합해서 답을 드립니다.
100퍼센트 정확하진 않아요.
요약하자면 더 효율적이고 빠르기 때문입니다.
기본적으로 레지스터를 통한 값의 주고받음의 속도가 빠릅니다(라고 합니다.)
이에 대한 예시는 들기 어렵네요.
더불어 더 짧은 기계어로 실행이 가능합니다(라고 합니다.)
극단적인 예로 eax를 0으로 만들기 위한 오퍼레이션 코드를 보면 쉽게 아래와 같이 생각할 수 있습니다.
b8 00 00 00 00 mov $0x0,%eax
하지만 아래와 같이 효율적으로 동일한 행위를 할 수 있습니다.
31 c0 xor %eax,%eax
보시다시피 더 짧은 코드로, 즉 더 적은 용량으로 같은 역할을 수행합니다.
이런 것과 같은 이유 입니다(라고 합니다.)