当前位置:  开发笔记 > 编程语言 > 正文

臂.从Supervisor模式访问用户R13和R14

如何解决《臂.从Supervisor模式访问用户R13和R14》经验,为你挑选了1个好方法。

如何访问在进入管理员模式时保存的用户R13和R14?我正在使用ARM7TDMI.

IE我不想访问管理程序R14,它现在包含返回用户模式的地址,而不是想要用户模式的链接寄存器的值.这是我正在编写的调试器的一部分.

这些寄存器有特殊的别名吗?

谢谢



1> Dan..:

我将描述您的具体问题的答案,但同样的方法也适用于其他模式.

您需要通过将CPSR中的模式位更改为系统模式来更改处理器模式.这将使您可以访问用户模式的SP/LR(R13和R14).请记住,系统模式具有特权,但其R13和R14与用户模式的R13和R14相同.

进入系统模式后,请阅读R13和R14并将它们放在您想要的位置.然后只需将模式位切换回以前的模式(我相信这是你的例子中的管理员模式),你很高兴.

请注意,我们没有从主管切换到用户模式. 如果您从主管切换到用户,则无法返回主管模式.(否则将无法保护用户代码升级权限).这就是我们使用系统模式的原因 - 系统模式具有特权,但寄存器与用户模式相同.

您可以通过操纵CPSR中的模式位来随意切换任何特权模式.我认为他们是低5位?我在路上,没有触手可及的信息.否则我会为你提供我上面所描述的汇编代码.实际上,如果你想把一些头发放在胸前,拿走我上面给你的东西,实施它,测试它,然后把它贴回来.:-D

(我应该为"一般情况"添加一件事(你的非常具体) - 你可以检查SPSR以查看"你来自哪里" - 并用它来确定你需要切换到哪种模式.)

顺便说一句,我最近刚刚为我的一位客户做过这样的事情......我猜是小世界.

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