4
스택 프레임에서 함수의 리턴 값을 푸시하는 것이 합리적인지 궁금합니다.스택 프레임에서 리턴 값을 푸시
반환 값은 대부분 레지스터에 저장된다는 것을 알고 있지만 (gcc의 경우 eax) 성능을 위해서입니까?
감사합니다.
스택 프레임에서 함수의 리턴 값을 푸시하는 것이 합리적인지 궁금합니다.스택 프레임에서 리턴 값을 푸시
반환 값은 대부분 레지스터에 저장된다는 것을 알고 있지만 (gcc의 경우 eax) 성능을 위해서입니까?
감사합니다.
의미가 있지만 수동 삽입해야합니다 (간단한 푸시가 아닌). 함수를 호출하기 전에 호출자가 '공간'을 할당해야합니다 (함수를 호출하기 전에 sp를 줄여야합니다). 함수에서 반환 할 때 반환 주소는 스택의 맨 위에 있어야하므로 반환 값이 있어야합니다. 반송 주소 아래에 [스택에 인수를 전달하는 것과 같은 원리]
명확한 설명을 가져 주셔서 감사합니다. 이 경우 호출자는 반환 값을 일부 변수에 지정하고 (필요한 경우) 팝업 한 다음 매개 변수를 팝업해야합니다. – ms123
예. 함수를 호출하기 전에 호출자는 반환 값에 충분한 공간을 제공하기 위해 sp를 줄입니다. 함수가 끝나면 호출자가 반환 값을 스택 [반환 주소가 이미 튀어 올랐습니다.]에 반환 할 것이므로 스택 어딘가에 할당하고 스택에서 팝해야합니다. – amit