- Код: Выделить всё
@@l251:
; [549] Inc(Result, h * k);
mov ebp,edi
imul ebp,esi
add eax,ebp
Как видно, все нормально и идет оптимизация под использование 32-битных регистров для целочисленных переменных...
А теперь для условного перехода добавим вполне невинный и минимальный код и увидим, что оптимизация отключилось всей процедуры и опять идут долгие обращения к памяти, вместо быстрых регистровых, а вся логика оптимального кода, в общем случае, слита в канализацию, я уже не говорю что до кучи, если это не отследить крайне вероятен SIGSEGV если есть любые обращения к пользовательским структурам данных.....
- Код: Выделить всё
@@l251:
; [549] Inc(Result, h * k);
mov edx,dword ptr [ebp-24]
mov eax,dword ptr [ebp-16]
imul eax,edx
add dword ptr [ebp-12],eax
; CPU PENTIUM4
@@l252:
; [551] JO Over
jo @@j258
; CPU PENTIUM4
Вопрос - это лечится или никак? Насколько помню свой опыт не только в С, но в T(B)P (включая TP3), такого там не было....