如果我定义一个类的静态实例,编译器(特别是 g++/clang)是否有优化以在直接或间接访问数据成员(我的意思是公式)时省略base
寄存器(用于调用)并且只对所有这些成员使用单个常量?所有成员函数都可能变成静态的(如果是类的唯一实例,这是合理的)。this
[base + index * scale + displacement]
displacement
我无法检查这一点,因为在 godbolt.org 编译器上积极优化以下代码xor eax, eax; ret
:
struct A
{
int i;
void f()
{
++i;
}
};
static A a;
int main(int argc, char * argv[])
{
a.i = argc;
}