(это я снова про свою идею оптимизатора бинарников Delphi/FPC)
На картинке асм для кода вида:
if (arr[i+1]=1) or (arr[i+2]=2) or (arr[i+3]=3) or (arr[i+4]=4) then ...
тут видно, что непонятно зачем компилятор постоянно обращается к памяти, считывает в регистр, не изменяет его и снова тоже самое туда считывает... это не оптимально
вот можно ведь написать анализатор+патчер для такого рода кода, повторные лишние обращения к памяти просто заNOPить
?
Дмитрий как-то сказал, что в общем случае программу правильно дизассимблировать нельзя... но это я так понимаю если будут джампы в середину инструкций куда-то, различные хаки, но FPC/Delphi компиляторы (да и другие наверное?) такой код не генерят...
Поэтому наверно четко, без ошибок всё же можно дизассемблировать программу, проанализировать и занопить такие лишние обращения к памяти
?
Можно
Обсуждают сегодня