최근 내가 (나 strlen처럼, 어떤 전화 또는 콜 지침을 필요로하지 않았다 것) 그들 중 일부를 들어, 어셈블리에서 일부 libc의 기능을 재 작성하고, 나는 프롤로그와 에필로그를 폐기 그것 없이는 실패했을 것입니다. (어쩌면 복잡한 테스트가 충분하지 않을 수도 있습니다.) 피어 리뷰 중에 누군가가 버리는 것은 나쁜 습관이라고 말했지만 그 이유를 설명 할 수는 없습니다.어셈블리 기능을 작성할 때 프롤로그 및 에필로그가 필수입니까? 내 테스트하지 않았기 때문에
그래서 prologue/epilogue 콤보가없는 asm 함수를 호출 할 때 문제가 발생합니까?
스택에 추가 공간이 필요하지 않은 경우에도 추가하는 것이 좋습니다.
몇 가지 이유로 의무적 인 경우 컴파일러 (필자는 nasm을 사용함)가 처리하지 않는 이유는 무엇입니까? 디버거는 당신이 지금에 기능을 알고하는
당신이 적절한 스택 프레임을 설정하지 않은 경우
최적화 된 생산 코드에서는 필요하지 않은 경우 프롤로그/에필로그를 건너 뜁니다. 그러나 디버깅 또는 프로파일 링의 경우 클린 스택 프레임을 갖는 것이 유용 할 수 있습니다. 많은 디버거가 이에 의존합니다. – Ctx