Retq指令,它在哪里返回
我无法理解汇编指令retq
返回的位置。
我知道当我的普通代码执行时,它会返回到堆栈中指定的地址。 但它如何知道堆栈中的返回地址?
简而言之,它是否使用rbp或esp来查找堆栈中的地址?
在学习汇编代码之后,这里是我的想法:让我们看一个示例:
fun:
push %rbp
mov %rsp,%rbp
...
...
pop %rbp
retq
main:
...
...
callq "address" <fun>
...
...
我们可以看到在retq之前有一条指令。 “pop%rbp”(有时它是离开指令,但有类似的)指令
例如:在pop命令之前:rsp被指向0x0000 0000 0000 00D0
弹出命令后:0x0000 0000 0000 00D8(假设堆栈从高地址增长到低地址)
在pop命令之后,现在rsp指向一个新地址,并且retq将此地址作为返回地址。
链接地址: http://www.djcxy.com/p/15275.html上一篇: Retq instruction, where does it return
下一篇: Get all images from a board from a Pinterest web address