어셈블리 지침 retq
이 어디로 반환되는지 이해할 수 없습니다.Retq 명령, 반환 위치
정상적인 코드가 실행되면 스택에 지정된 주소로 돌아갑니다. 그러나 스택에있는 반환 주소가 어디에 있는지 어떻게 알 수 있습니까?
간단히 말해 스택에서 주소를 찾기 위해 rbp 또는 esp를 사용합니까? 이의이 샘플을 살펴 보자 : 우리가 retq 전에 명령이 볼 수
fun:
push %rbp
mov %rsp,%rbp
...
...
pop %rbp
retq
main:
...
...
callq "address" <fun>
...
...
실험하고 싶다면'retq'을'addq $ 8, % rsp;로 바꾸어보십시오. jmpq -8 (% rsp)'. 기능상으로 동등한 (성과가 아닌). –