inc eax / dec eax

Тема в разделе "WASM.BEGINNERS", создана пользователем nitrotoluol, 31 июл 2007.

  1. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Интересует, почему все чаще я вижу выражения, типа add reg32, 1 / sub reg32, 1 вместо привычного inc / dec? При чем код сгенерирован людьми, а не компилятором...

    Почему все отказываются от inc /dec ? Это как-то связанно с производительностью?
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    помоему таким людям лучше использовать компиляторы :)
    потому как два байта на каждой инструкции на дороге не валяются
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Поиск "зависимость по флагам" выдает исчерпывающие ответы и по этой самой зависимости, и о ликвидации однобайтовых inc\dec в x86-64
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    nitrotoluol
    add reg,1 лучше чем inc reg. в dec тоже самое. Подписываюсь под постом leo
     
  5. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Great
    leo
    Т.е. inc eax на платформе x86(64) вызовет исключение?
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    неа. в x86-64 вместо обнобайтовых inc/dec идёт байт префикса REX. теперь только 2хбайтовые.
     
  7. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    n0name
    я может неправильно выразился...
    Если программа собрана на win32 платформе через masm32 с использованием однобайтового inc eax - исключение на x86(64) будет или нет? ))
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Для совместимости должно работать в 32битном режиме. Я думаю имелось в виду устранение этих команд в long mode
     
  9. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    ок
    спс )
     
  10. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Часче всего такую замену делают из-за того, что оптимизация процессоров дошла до того, что на пентиум2-3 инкремент почти в 2 раза медленее работает чем адд. Эти "недостатки" исправили токо в прескотах - инкремент и сумирование выполняются практически одинаково. Кодеки например, которые пишутся на оптимизацию по скорости практически не содержат инкрементов.
    Всё проверил сам, данные не с неба.
     
  11. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    Гугл нашел только Ваш пост :) Дайте линки плиз.
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Mental_Mirror
    Наверное, это.
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Mental_Mirror
    http://wasm.ru/forum/viewtopic.php?id=19715&p=2
     
  14. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    IceStudent,Great Большое спасибо, Вы очень любезны.