|
1
|
| RobertS supports Monica Cellio · 技术社区 · 6 年前 |
|
1
5
使用它没有好处
我自己的代码都不使用
|
|
2
3
正如@JonathanLeffler所说,它在大多数情况下被忽略。 如果要将变量保留在特定寄存器中,某些编译器有一种特殊的扩展语法。 gcc 全局或局部变量可以放在特定寄存器中。此选项不适用于所有平台。我知道AVR&ARM端口实现了它。 例子:
但说实话,在我的编程生涯中(30岁以上),我从未使用过它 |
|
3
1
它实际上已经被弃用了,而且没有真正的好处。
C是20世纪70年代早期的产物
信息技术 也许 在当时已经产生了影响——现在,它几乎被忽视了。唯一可测量的影响是,它阻止您获取该对象的地址。 |
|
|
4
1
首先,这个特性没有被弃用,因为在这个上下文(全局或局部寄存器变量)中的“register”是一个GNU扩展,它没有被弃用。 在您的示例中,R10(或GCC内部分配给REGNO(reg)=10的寄存器)是一个全局寄存器。这里的“全球”意思是 全部的 应用程序中的代码必须同意这种用法。对于libc、libm或libgcc等库中的代码,情况通常不是这样,因为它们不是用-ffix-10编译的。此外,全局寄存器可能与ABI冲突。例如,avr gcc可能会在R10中传递值。在avr gcc中,R2。。。ABI不使用R9,libgcc的代码也不使用R9(64位双精度除外)。 在一些带有avr gcc的硬实时应用程序中,我使用了全局regs进行(过早)优化,只是为了注意到性能增益微乎其微。 然而,本地寄存器变量在集成非ABI函数时非常方便,例如不符合GCC ABI的汇编函数,而不需要汇编包装器。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |