2013-01-25 110 views
1

讀取ARM AAPCS(ARM EABI),我發現: 寄存器r9的作用是平臺特定的。虛擬平臺可以將任何角色分配給該註冊,並且必須記錄這種使用。例如,它可以將其指定爲位置無關的數據模型中的靜態基址(SB),或者可以在具有線程本地存儲的環境中將其指定爲線程寄存器(TR)。這個寄存器的用法可能要求所有呼叫持有的值是永久的。不需要這種特殊寄存器的虛擬平臺可以將r9指定爲額外的被呼叫保存的變量寄存器v6。ARM - 如何使用armcc保存r9寄存器

我想使用r9作爲我的特定航空電子設備搶佔式操作系統的PID持有者,但我無法弄清楚如何保留它:armcc C編譯器總是使用它作爲變量寄存器,所以它的值始終通過應用軟件進行更改。

有什麼想法?用armcc可以嗎? GCC?戴鉑?...

感謝您的任何幫助。

問候

克里斯托夫

回答

0

我回答mysellf: 的GCC,可以使用-ffixed-R9。

GCC online documentation

而對於Windriver的迪亞布編譯器:

「的#pragma global_register時標識符=寄存器」

(要被包括在每一個文件)