簡體   English   中英

為什么FIQ需要用匯編而不是C編寫?

[英]Why FIQ need to be written in assembly not in C?

我正在研究FIQ在ARM上的工作方式,遇到了這樣的說法:FIQ應該始終以匯編語言而不是C語言編寫,但不明白為什么?

我已經通過以下鏈接

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

但是仍然不知道為什么要這樣做嗎?

有人可以通過一些示例指出我需要編寫FIQ嗎?

我的猜測基於此:

另外,用C編寫FIQ代碼有點困難,因為您缺少堆棧:)

如果沒有堆棧,那將意味着編譯器被限制為僅對所有變量使用寄存器,我不確定您將如何表達。

您可以在所有局部變量上register ,但這並不意味着編譯器必須遵守。

當然,用匯編語言編寫代碼會繞過此限制,並且可以將寄存器和全局狀態結合起來進行操作。

有關普通中斷和快速中斷之間的區別的更多信息,請參見此問題的答案

因為這有什么意義,您在使用額外的寄存器組來節省保存狀態時的幾個時鍾周期,然后使用C並徹底節省了這么少的成本? 如果您對優化到該級別不感興趣,則不必擔心fiq,只需使用irq。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM