我正在研究FIQ在ARM上的工作方式,并遇到这样的说法:FIQ应该始终以汇编语言而不是C语言编写,但不明白为什么?

我已经通过以下链接

http://comments.gmane.org/gmane.linux.ports.arm.kernel/14004

但是仍然不知道为什么要这样做吗?

有人可以通过一些示例指出我需要编写FIQ吗?

最佳答案

我的猜测基于此:


  另外,用C编写FIQ代码有点困难,因为您缺少堆栈:)


如果没有堆栈,那将意味着编译器被限制为仅对所有变量使用寄存器,我不确定您将如何表达。

您可以在所有局部变量上放置register,但这并不意味着编译器必须遵守。

当然,以汇编形式编写代码会绕过此限制,并且可以将寄存器和全局状态结合起来进行操作。

另请参阅this question's answers,以了解有关普通中断和快速中断之间的区别的更多信息。

08-16 11:23