我目前正在阅读/学习ARM架构…… 我想知道为什么有这么多模式(FIQ,用户,系统,监督员,IRQ等)。
我的问题是我们为什么需要这么多模式?只有用户和系统不就足够了吗?
谢谢您的提前帮助。
这只是一种架构决策。多种模式的主要优点在于它们有一些银行寄存器。这些额外的寄存器允许您编写更简单的异常处理程序。
如果只选择两个模式,则仅使用 USR 和 SYS 可能是任何选择的好选择,但当您遇到异常时会发生什么情况?常规的 ARM 模型是进入异常模式,将该异常模式的银行链接寄存器设置为指向您想要在解决异常后返回的指令,将处理器状态保存在异常模式的 SPSR 寄存器中,然后跳转到异常向量。USR 和 SYS 共享所有寄存器-使用此模型,每次处理中断时都会清除您的函数返回地址(在 LR 中)!
特别是 FIQ 模式比其他异常模式具有更多的银行寄存器。这些额外的寄存器符合 FIQ 的 "F" 部分 - 它代表 "快速"。在软件中不需要保存和恢复更多的处理器上下文,这将加速您的中断处理程序。