gpt4 book ai didi

assembly - 如果汇编程序的 CALLed 代码块中没有 return 语句怎么办

转载 作者:行者123 更新时间:2023-12-03 22:58:04 25 4
gpt4 key购买 nike

如果我说 'call' 而不是 jump 会发生什么?既然没有写return语句,是直接把控制权交给下面的下一行,还是调用后还是返回到该行?

start:
mov $0, %eax
jmp two
one:
mov $1, %eax
two:
cmp %eax, $1
call one
mov $10, %eax

最佳答案

您的直觉是正确的:在函数返回后,控件只是传递到下面的下一行。

在您的情况下,在 call one 之后,您的函数将跳转到 mov $1, %eax 然后继续向下到 cmp %eax, $1 并以无限循环结束,因为您将再次 call one

除了无限循环之外,您的函数最终将超出其内存限制,因为 call 命令将当前 rip(指令指针)写入堆栈。最终,您将溢出堆栈。

关于assembly - 如果汇编程序的 CALLed 代码块中没有 return 语句怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com