是否有一种方法可以强制C ++编译器将变量存储在寄存器中? [重复]

问题描述 投票:1回答:1

[我知道inline关键字使编译器更容易内联函数,尽管该决定取决于编译器,并且GNU扩展名__attribute__((always_inline))强制编译器内联它。相应地,有没有...

__attribute__((always_register)) register int foo = 678;

...或类似的东西?

c++ cpu-registers
1个回答
2
投票

GCC通过使用关键字asm and register为本地变量指定寄存器的方法:

asm

注意引号:

此功能唯一受支持的用途是为调用扩展register时的输入和输出操作数。

此功能在某些体系结构的Linux内核中使用,以访问存储在通用寄存器之一中的线程本地存储。这是在register int *foo asm ("r12"); 上实现asm宏的方式:

current

这种用法很有趣,因为它在全局范围内使用ARC architecture关键字,而它在标准C语言中只能与局部变量一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.