, 우리 일반적으로 함수에서 반환 할 때 :함수가 반환 된 후 esp의 값은 무엇입니까? C/86에서
pop ebp
이전 함수의 프레임 포인터를 복원하기 위해 호출하는 함수가 계속 될 수 있음을 암시pop eip
그래서 포함 (내가 이해)ret
반환 주소에서 실행하려면
이 시점에서 esp에 포함 할 것으로 예상되는 항목은 무엇입니까? 반환 주소 바로 위의 포인터이거나, ret
에 의해 암시 적으로 변경된 esp의 값입니까?
감사합니다 :) ret
후
CDECL 호출 규칙에서 'esp'는 이제 호출 전에 스택에 푸시 된 마지막 매개 변수를 가리 킵니다. –
이와 같은 질문에 대해서는 각 지침의 역할에 대한 매우 자세한 설명이 포함 된 설명서를 읽는 것이 좋습니다. – fuz
@CodyGray :'ret'는 esp에 영향을 미칩니다 : OP와 마찬가지로 반송 주소를 나타냅니다. 올바른 명령문은 호출/리턴 쌍이 스택에 영향을 미치지 않는다는 것입니다 (호출자가'ret imm16'을 사용하는 호출 수신자 대신 args를 팝하는 호출 규칙을 가정 할 때) –