push rax 할 때

rax에 문자열을 넣고 rax를 push 하잖아요, push 문자열 하지 않고 rax에 담아서 push하는 이유가 있나요?

#시스템_해킹 #공격기법
작성자 정보
답변 1
avatar
wyv3rn
무플 방지 위원회장

음 이런저런 글을 조합해서 답을 드립니다.
100퍼센트 정확하진 않아요.

요약하자면 더 효율적이고 빠르기 때문입니다.

기본적으로 레지스터를 통한 값의 주고받음의 속도가 빠릅니다(라고 합니다.)

이에 대한 예시는 들기 어렵네요.

더불어 더 짧은 기계어로 실행이 가능합니다(라고 합니다.)

극단적인 예로 eax를 0으로 만들기 위한 오퍼레이션 코드를 보면 쉽게 아래와 같이 생각할 수 있습니다.

b8 00 00 00 00 mov $0x0,%eax

하지만 아래와 같이 효율적으로 동일한 행위를 할 수 있습니다.

31 c0           xor %eax,%eax

보시다시피 더 짧은 코드로, 즉 더 적은 용량으로 같은 역할을 수행합니다.

이런 것과 같은 이유 입니다(라고 합니다.)

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