【发布时间】:2021-02-15 12:59:03
【问题描述】:
为什么 MIPS 堆栈基数是 0x7ffffffc 而不是 0x80000000?
如果我理解正确,堆栈指针是指放置在堆栈上的 last 项。那么,如果是这种情况,这是否意味着地址 0x7ffffffc 永远不会被使用,因为将整数压入堆栈的传统方法是将 $sp 递减到 0x7ffffff8 并将压入的值放在那里?
【问题讨论】:
-
不是推送和弹出伪代码,它的工作原理取决于您的汇编程序(特定工具)的伪代码,是吗?
-
如果你不知道你的工具在做什么,那么尺寸减 4 会是一个更安全的选择......
-
你是对的:这取决于工具的作用;但是,似乎大多数(如果不是全部)教科书一致认为堆栈指针指向放置在堆栈上的最后一项。如果这是某种约定,我希望工具能够遵循它。
-
是的,所以你可以从 0x800 开始......但这并不意味着大多数人都会这样做,有些人不会花时间,而只是使用通常有效且安全的负 4 或 8,但他们不这样做必须再考虑一下,如果 4 或 8 超出您的内存预算,您还有其他问题。
标签: assembly stack mips callstack stack-pointer