如何解决为什么MIPS堆栈基于0x7ffffffc而不是0x80000000
为什么MIPS堆栈基于0x7ffffffc而不是0x80000000?
如果我理解正确,则堆栈指针指向放置在堆栈上的 last 项目。那么,如果是这种情况,那是否不意味着就永远不会使用地址0x7ffffffc,因为在堆栈中压入整数的常规方法是将$ sp减为0x7ffffff8并将压入的值放在那儿?
解决方法
模拟器(即QtSPIM)使用堆栈指针做奇怪的事情;它们会在修改堆栈指针(而不是将堆栈内存存储到)时采取行动(例如为堆栈分配额外的内存)。 (因此,您可以通过在堆栈指针寄存器中放置一个随机值,使这些模拟器感到非常痛苦。)
然后我的猜测是,由于0x80000000位于受保护的内核内存中,因此他们根本不需要该寄存器中的值,是的,这意味着永远不会使用内存字。
我敢保证实际的硬件不会出现此问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。