【问题标题】:stack memory allocation is it done in processor/RAM堆栈内存分配是在处理器/RAM中完成的
【发布时间】:2015-10-30 16:23:47
【问题描述】:

目前我正在学习 MIPS 架构, 在我遇到子程序调用时,它说堆栈分配发生在使用寄存器的处理器内

Source for this

但我也学习过java的基础编程课程。如果我知道的是正确的! "函数调用期间的堆栈内存分配发生在 RAM 中 "

this i confirmed from stack overflow (2nd ans)

谁能告诉我我的理解哪里错了,如果是,为什么?

提前致谢

【问题讨论】:

  • 我认为有两件事混淆了:堆栈在哪里(对于通用 CPU,总是在 RAM 中)和堆栈指针在哪里(总是在寄存器中)。
  • 知道了,谢谢!! :)

标签: java stack mips


【解决方案1】:

堆栈直接在 RAM 中,对于大多数处理器,MIPS 都有寄存器来帮助它有效地移入堆栈并跟踪数据。两个重要的处理器寄存器是堆栈指针(指向堆栈顶部)和帧指针(指向堆栈中的当前堆栈帧)。

【讨论】:

  • 所以首先在 RAM 中创建一个堆栈,当处理器调用子程序时,创建的堆栈中的所有数据将再次以堆栈格式传输到寄存器文件中的寄存器中@ouah
  • @selfish 你不创建堆栈,你只需将堆栈指针指向某个地方,它下面的任何东西都是堆栈:)
  • @selfish 堆栈是RAM的一块区域(通常在用户虚拟空间内存的顶部地址),堆栈寄存器仅用于在堆栈中移动。
【解决方案2】:

从 RAM 中分配了一个堆栈。快速查看您的链接,但找不到他们所说的堆栈分配在处理器内使用寄存器进行的位置。也许他们指的是在调用子例程之前放置变量的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-29
    • 2021-04-08
    • 2018-07-24
    • 2011-10-09
    • 2011-05-28
    • 2012-12-05
    • 2010-11-15
    相关资源
    最近更新 更多