当前位置:  开发笔记 > 程序员 > 正文

在PowerPC上处理外部异常时使用r1堆栈指针

如何解决《在PowerPC上处理外部异常时使用r1堆栈指针》经验,为你挑选了1个好方法。

我正在编写一个汇编程序来处理EABI嵌入式PowerPC应用程序中的0x500外部/递减器异常.

在从0x500向量点调用的汇编程序中,我想在分支到'C'中的处理函数之前使用一些内存来保存寄存器.

因为i)异常模型保证先前的指令将在异常处理程序运行时完成,并且ii)调用约定似乎在进入新函数时首先更新堆栈指针(r1),然后释放新的堆栈空间通过移动它(并将堆栈指针移回到函数末尾的最后位置)

在我看来,我可以安全地使用r1在异常处理例程中为普通堆栈提供更多空间,显然我遵守调用约定并将堆栈放回原来我找到它并确保SRR0和SRR1是修改.

我不打算允许在处理中使用堆栈的异常嵌套(尽管实际上使用这种方法我不确定会出现问题).

您认为这是一种明智的方法,还是应该使用单独的堆栈进行异常处理? - 我认为这可能带来它自己的问题.



1> 小智..:

嵌入式系统以这两种方式实现.如果你完全确信堆栈指针总是指向一个有效的帧,并且堆栈中有新空间的空间,那么继续使用它.如果堆栈指针有可能不会始终有效,则应保存旧堆栈指针(通常在SPRG中)并设置自己的堆栈指针.

如果您要处理数据访问异常以检测软件错误,您肯定希望设置自己的异常堆栈,因为DACC可能是由堆栈指针损坏引起的.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有