-1

我正在研究 FIQ 如何在 ARM 上工作,并发现 FIQ 应该始终用汇编而不是 C 编写,但不明白为什么?

我已经通过以下链接

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

但仍然无法弄清楚为什么需要它?

任何人都可以通过一些例子指出我需要在汇编中编写 FIQ 吗?

4

2 回答 2

2

因为重点是什么,您使用额外的一组寄存器来节省少数时钟周期来保存状态,然后使用 C 并完全浪费了那微小的成本节省?如果您对优化到那个级别不感兴趣,那么不要打扰 fiq,只需使用 irq。

于 2015-02-25T03:01:21.063 回答
2

我的猜测是基于此:

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

如果没有堆栈,这意味着编译器仅限于对所有变量使用寄存器,我不确定你会如何表达。

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

用汇编编写代码当然会绕过这个限制,并且可以结合寄存器和全局状态来做事。

有关普通中断和快速中断之间区别的更多信息,另请参阅此问题的答案。

于 2015-02-24T15:04:29.083 回答