VC71: прикольный оптимизатор
От: Шебеко Евгений  
Дата: 22.02.10 15:02
Оценка: +1
Любителям "оптимизировать" код компилятора.
Даже не конкретно про VC71, вообще оптимизатор у современных компиляторов.

Color::Color(unsigned r_, unsigned g_, unsigned b_, unsigned a_=255) : rgba8(r_,g_,b_,a_){}

operator Color::unsigned() const
{
    return static_cast<unsigned>(r)|
               static_cast<unsigned>(g<<8)|
           static_cast<unsigned>(b<<16)|
           static_cast<unsigned>(a<<24);
}

sym.SetColor(0,Color(255,0,0));


Оптимизируется в это.

sym.SetColor(0,Color(255,0,0));
0044611A  push        0FF0000FFh 
0044611F  push        ebx  
00446120  lea         ecx,[esp+64h] 
00446124  call        agg::Symbol::SetColor (4906E0h)


Хорошо, позволяет убирать разные хаки.
Раньше стояло
operator Color::unsigned() const{return *(unsigned*)&r;};

так даже более длинный код генерировало.


24.02.10 13:49: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.