Интересует, почему все чаще я вижу выражения, типа add reg32, 1 / sub reg32, 1 вместо привычного inc / dec? При чем код сгенерирован людьми, а не компилятором... Почему все отказываются от inc /dec ? Это как-то связанно с производительностью?
помоему таким людям лучше использовать компиляторы потому как два байта на каждой инструкции на дороге не валяются
Поиск "зависимость по флагам" выдает исчерпывающие ответы и по этой самой зависимости, и о ликвидации однобайтовых inc\dec в x86-64
n0name я может неправильно выразился... Если программа собрана на win32 платформе через masm32 с использованием однобайтового inc eax - исключение на x86(64) будет или нет? ))
Для совместимости должно работать в 32битном режиме. Я думаю имелось в виду устранение этих команд в long mode
Часче всего такую замену делают из-за того, что оптимизация процессоров дошла до того, что на пентиум2-3 инкремент почти в 2 раза медленее работает чем адд. Эти "недостатки" исправили токо в прескотах - инкремент и сумирование выполняются практически одинаково. Кодеки например, которые пишутся на оптимизацию по скорости практически не содержат инкрементов. Всё проверил сам, данные не с неба.