Очистка регистра

Тема в разделе "WASM.BEGINNERS", создана пользователем Guru_of_Zen, 13 мар 2010.

  1. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    Почему XOR EAX,EAX предпочтительнее MOV EAX,0 ?

    Какой способ очистки регистров самый лучший по кол-ву байт / по быстродействию ?
     
  2. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    XOR короче, зато MOV быстрее. Зато для читаемости XOR точно несет смысл очистки регистра, а вот MOV - это воспринимается как a = 0.
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Guru_of_Zen
    До сих пор стыдно за ту тему, но в общем-то вот. :)
    Да... и xor ни разу не быстрее, как здесь отдельные лица изволят заявлять. :)
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Т.е. не xor, а mov.
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    l_inc
    В юзермоде да, под шедулером оптимизация бесполезна.
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    А я не буду отвечать на подстрекательства. :)
     
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    Даже я из учебников ито знаю что xor короче, а людям верить надо =)
    Но от кампилятора может тоже зависит )))))))
     
  8. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    В общем, каждый дро*ит как он хочет... :)
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    Guru_of_Zen
    За последнюю фразу нужно в баню на недельку, а по теме sub reg,reg
     
  10. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    sub reg,reg действительно хорош, поскольку при вычитании бит перенос никогда не встречается.
    xor reg,reg распознается процессором, и тот пуляет 0
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Собственно в чём проблема ?
    Судя по вопросу автор не будет исполнять свой код в не выгружаемой памяти с нулевым кпл. Значит значения не имеет ксор, вычитание или стопяцот инструкций вместо этого. Тоглько не нужно примеров и логи профайлера с миллионами итераций - на практике это не юзается ;)
     
  12. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    собственно у зубкова есть следующее:

     
  13. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Guru_of_Zen
    Блин. Я ссылку на тему вообще для чего дал? Нафиг Зубкова, читайте leo.
     
  14. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    впрочем в манах интела по оптимизации наряду с xor reg, reg указан и sub reg, reg

    так что рекомендация зубкова неясна.
     
  15. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    какую ссыль на тему?

    ссыль на профиль, а 30 паг листать и искать нужную - непонятно по каким критериям причем - желания нету . :)
     
  16. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Guru_of_Zen
    Мда... В третьем посте выложена ссылка.
     
  17. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Guru_of_Zen
    Блин... Прошу прощения... Думал, что это ссылка на тему. :)
    http://www.wasm.ru/forum/viewtopic.php?id=16412
     
  18. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    P.S. И как ссылка на профиль вообще туда попала...
     
  19. Guru_of_Zen

    Guru_of_Zen Member

    Публикаций:
    0
    Регистрация:
    21 янв 2010
    Сообщения:
    288
    спасибо, вкуриваю. :)

    зы. Почему? Вопрос по Ведению в машинный код и программированию под ДОС - никогда б не догадался по названию о чем там речь. :)
     
  20. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    MOV быстрее XOR?
    Я думал как. У обоих команд данные вводятся параллельно (разряды независимы друг от друга и каж. разряд можно заносить / ксорить одновременно с остальными). Но зато XOR устанавливает флаги. Вот я и решил что XOR медленнее.
    Если верить справке по опкодам

    Код (Text):
    1. XOR (2 байта)
    2. Clocks
    3. Operands         808x  286   386   486          Bytes
    4.         reg,reg           3     2     2     1             2
    5.  
    6. MOV (2-4 байта)
    7. Clocks
    8. Operands         808x  286   386   486          Bytes
    9.         reg,reg           2     2     2     1             2
    То на современных 486 обе команды работают 1 такт. Это относится и к 'mov reg,mem' хотя тут процессору нужно обращение к памяти для получения этого 'mem' (н-р, 'mov eax,[402052]'). В этих случаях mov работает медленнее. А вот если значение 0h записано непосредственно в команде, то также.