ARM-如何在armcc中保留r9寄存器

ARM-如何在armcc中保留r9寄存器,arm,eabi,armcc,Arm,Eabi,Armcc,阅读ARM AAPCS(ARM EABI),我发现: 寄存器r9的作用是特定于平台的。虚拟平台可以为此注册表分配任何角色,并且必须记录此用法。例如,它可以在独立于位置的数据模型中将其指定为静态基址(SB),也可以在具有线程本地存储的环境中将其指定为线程寄存器(TR)。使用此寄存器可能需要在所有调用中保持持久值。不需要这种特殊寄存器的虚拟平台可以将r9指定为另一个被调用方保存的变量寄存器v6 我想使用r9作为我的特定航空电子抢占式操作系统的PID保持器,但我不知道如何保存它:armcc C编译器总

阅读ARM AAPCS(ARM EABI),我发现: 寄存器r9的作用是特定于平台的。虚拟平台可以为此注册表分配任何角色,并且必须记录此用法。例如,它可以在独立于位置的数据模型中将其指定为静态基址(SB),也可以在具有线程本地存储的环境中将其指定为线程寄存器(TR)。使用此寄存器可能需要在所有调用中保持持久值。不需要这种特殊寄存器的虚拟平台可以将r9指定为另一个被调用方保存的变量寄存器v6

我想使用r9作为我的特定航空电子抢占式操作系统的PID保持器,但我不知道如何保存它:armcc C编译器总是将它用作变量寄存器,因此它的值总是通过应用软件更改

有什么想法吗?使用armcc可以吗?GCC?迪亚布

谢谢你的帮助

问候


Christophe

对于ARMCC,您可以尝试

--global_reg=6

对于ARMCC,您可以尝试

--global_reg=6
我对自己的回答是: 对于GCC,可以使用-ffixed-r9

对于Windriver Diab编译器:

“#pragma全局_寄存器标识符=寄存器”

(包含在每个文件中)

我回答我的问题: 对于GCC,可以使用-ffixed-r9

对于Windriver Diab编译器:

“#pragma全局_寄存器标识符=寄存器”

(包含在每个文件中)