Architecture 调用堆栈和帧堆栈具有不同位置的平台?

Architecture 调用堆栈和帧堆栈具有不同位置的平台?,architecture,hardware,platform,Architecture,Hardware,Platform,是否有硬件平台本机支持两个不同的内存位置来存储调用堆栈和函数堆栈帧的堆栈?第一个-可能对用户代码进行读写保护。 对硬件平台特别感兴趣,这些平台是为传统的结构化语言(即C/C++)设计的,但不是外来的。这是真正低资源微控制器的常见设置 这种安排的动机通常是以下一种或两种: 1) 以核心速度运行的片上SRAM数量有限(通常为1或2 kB),而额外内存的访问时间较慢-1kB足以容纳几个返回地址的线程堆栈,而不是堆栈上存储的大型自动变量。 2) 分段寻址模式,其中段内存访问指令使用较短的操作码进行编码,

是否有硬件平台本机支持两个不同的内存位置来存储调用堆栈和函数堆栈帧的堆栈?第一个-可能对用户代码进行读写保护。
对硬件平台特别感兴趣,这些平台是为传统的结构化语言(即C/C++)设计的,但不是外来的。

这是真正低资源微控制器的常见设置

这种安排的动机通常是以下一种或两种:

1) 以核心速度运行的片上SRAM数量有限(通常为1或2 kB),而额外内存的访问时间较慢-1kB足以容纳几个返回地址的线程堆栈,而不是堆栈上存储的大型自动变量。 2) 分段寻址模式,其中段内存访问指令使用较短的操作码进行编码,因此可以更快地从RAM中提取

这种安排使得函数调用和返回的简单案例变得便宜

实际上,对于许多CPU体系结构,尤其是RISC体系结构,编译器使用通用内存访问指令来创建和使用堆栈帧,因此,堆栈帧驻留在何处以及如何使用堆栈帧的决定权属于编译器作者,而非CPU架构师


我怀疑您对这个问题的想法是保护返回地址不被堆栈帧中的其他数据覆盖?

我认为多用户多任务环境可以防止未经授权的访问。