2013-01-25 43 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时标识符=寄存器”

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