我正在研究FIQ在ARM上的工作方式,并遇到这样的说法:FIQ应该始终以汇编语言而不是C语言编写,但不明白为什么?
我已经通过以下链接
http://comments.gmane.org/gmane.linux.ports.arm.kernel/14004
但是仍然不知道为什么要这样做吗?
有人可以通过一些示例指出我需要编写FIQ吗?
最佳答案
我的猜测基于此:
另外,用C编写FIQ代码有点困难,因为您缺少堆栈:)
如果没有堆栈,那将意味着编译器被限制为仅对所有变量使用寄存器,我不确定您将如何表达。
您可以在所有局部变量上放置register
,但这并不意味着编译器必须遵守。
当然,以汇编形式编写代码会绕过此限制,并且可以将寄存器和全局状态结合起来进行操作。
另请参阅this question's answers,以了解有关普通中断和快速中断之间的区别的更多信息。