1

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

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

任何想法 ?armcc 可以吗?海湾合作委员会?戴铂?...

谢谢你的帮助。

问候

克里斯托夫

4

2 回答 2

1

对于 ARMCC,您可以尝试

--global_reg=6

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CHDBJGCH.html

于 2013-01-25T12:54:02.630 回答
0

我回答 mysellf :对于 GCC,可以使用 -fixed-r9。

GCC 在线文档

对于 Windriver Diab 编译器:

“#pragma global_register 标识符=注册”

(要包含在每个文件中)

于 2013-07-19T15:16:41.483 回答