Баг P4 'rep mov'.

Тема в разделе "WASM.ZEN", создана пользователем Clerk, 26 дек 2008.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Хоть баян, но интересно, никогда реально не сталкивался. Сначала не понял почему код криво работает, оказывается нужно было выровнить в памяти строку. Описан баг в спецификации(24919969.pdf) как:
    Записал скрин: http://openfile.ru/162919/
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Не туплю, это не баг, это я забыл ret поставить. Жаль.)
    ЗЫ: После суток кодинга совсем крыша ушла)
     
  3. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    ... rep cli ?
     
  4. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    а почему rep push eax не работает ???
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    nc
    Префикс REP, как и прочие, предназначен только для строковых инструкций.
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Table 1.Latency of Repeated String Instructions
    Код (Text):
    1. Instruction  ECX=0 (cycles)  DF = 0 (cycles) DF = 1 (cycles)
    2. REP MOVS     11              15 + (4/3*c)    25 + (4/3*c)
    3. REP STOS     11              14 + (1*c)      24 + (1*c)
    4. REP LODS     11              15 + (2*c)      15 + (2*c)
    5. REP SCAS     11              15 + (5/2*c)    15 + (5/2*c)
    6. REP CMPS     11              16 + (10/3*c)   16 + (10/3*c)
    Note: c = value of ECX, (ECX > 0)

    Интересно, что латентность movs и stos на 10 тактов больше при установленом флаге направления.
     
  7. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    SII
    официально да, но AMD одно время его рекомендавала использовать так: rep ret, что и делают некоторые программисты и по сей день (давеча был разговор)
     
  8. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    asmfan
    Это как? То есть
    Код (Text):
    1. call a
    2. a:
    3. call b
    4. b:
    5. call c
    6. c:
    7. mov ecx,3
    8. rep ret
    при выполнении rep ret произойдёт переход на a:
     
  9. CreatorCray

    CreatorCray Member

    Публикаций:
    0
    Регистрация:
    5 авг 2006
    Сообщения:
    201
    Нет, это они так баги в проце обходят.
     
  10. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    rep к ret ничего более, чем хинт АМДшному процессору к правильному предсказанию в нек-рых случаях. уже не рекомендуют использовать это. раньше было.