Wednesday, November 9, 2011

optimization patterns for i386

Сабж любезно предоставлен оптимизирующими компиляторами:
1)
NEG ESI
SBB ESI, ESI
AND ESI, [ESP+0x844]

2)
NEG EAX
SBB EAX, EAX
NEG EAX

Мне понравилось.
Кому лень парсить, разгадку помещаю в комменты.

3 comments:

ligen said...

1)
if (esi)
{
esi = var;
}

2)
if (esi)
{
esi = 1;
}

redp said...

на 64 битах cmovX нынче модно использовать в подобных случаях

Unknown said...

Не, cmovcc медленный,
Второй вариант можно сделать через test + setnz (если для результата достаточно байта), но тоже тестить надо (что быстрее).