Привет! Мне было интересно, какой ассемблерный код сгенерирует gcc из этого кода (это просто фиктивный код для иллюстрации моей точки зрения):
int a = 0;
int foo(void)
{
int result = a;
a += 2;
return result;
}
Я был удивлен, что gcc копирует переменную a в стека затем из стека в регистр, чтобы он мог его вернуть.Когда я добавил регистр в объявление результата, он оптимизировал код не для использования стека, а вместо этого, чтобы скопировать переменную непосредственно в регистр.Я знаю, что это не имеет никакого значения, но мне было интересно, есть ли веская причина, почему gcc не делает такую оптимизацию неявно.Надеюсь, я ясно дал понять, о чем говорю ...
Есть идеи?