【发布时间】:2016-09-23 20:50:48
【问题描述】:
我知道堆栈数据结构用于存储正在运行的函数的许多其他内容中的局部变量。
我也了解如何使用堆栈来优雅地管理递归。
假设有一台机器没有在内存中提供堆栈区域,我认为不会有支持递归的机器的编程语言。我也想知道机器的编程语言是否支持没有递归的函数。
请有人帮我看看这个。
【问题讨论】:
-
您总是可以让编译器“手动”使用内存区域作为类似堆栈的数据结构。您可以使用 RSP 以外的寄存器模拟 x86 上的 push/pop 和 call/ret,仅使用 MOV 加载/存储、ADD 和间接 JMP。
-
另外,我似乎记得读过关于通过传递指针而不是推送返回地址来实现函数调用/ret 的语言的 SO 答案。或者别的什么,我真的不记得了。它不仅仅是一个相当于推送返回地址的链接寄存器,它是不同的东西。但我想不起来再找到它或说什么有用的话。
标签: compilation computer-science cpu-architecture