Префиксы

Тема в разделе "WASM.BEGINNERS", создана пользователем Quark, 30 авг 2007.

  1. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Я не совсем понимаю: если префекс rep стоит перед какой-нибудь не строковой коммандой, то он не несёт никакой смысловой нагрузки? то есть работает как nop... тоже самое и с остальными префиксами. скажем сегментными. если сегментный префикс стоит перед каким-нибудь push eax или inc edi.

    Почему тогда Intel так неоптимально расходеут опкоды?
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Почему то же самое? Префикс замены сегментного регистра переопределяет сегментный регистр, принятый для использования регистром/командой по-умолчанию. Просто в Win/*nix используется плоская модель памяти, поэтому замена сегментных регистров не так актуальна. Но актуально, например, для регистра fs в Win. Но если вспомнить DOS, например, или взять неплоскую модель памяти, то замена сегментных регистров будет иметь намного больший эффект.
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Mika0x65

    Quark
    Предложи свой вариант :)
     
  4. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Тип адресации, как я понимаю, касается операций с памятью. если стоит что-то типа:

    2E:8BD0 | mov edx,eax

    то как тогда может повлиять префикс 2E на результат комманды mov edx,eax? тут ведь нет обращения к памяти. Или, скажем, тот-же самый

    36:50 | push eax

    Я понимаю суть префикса, когда идёт, скажем mov [edx],eax. но не понимаю какую смысловую нагрузку он несёт в случаях, когда процессор не обращается к памяти... Подобная ситуация с прехексами repX. если rep прехикс идёт не перед строковой коммандой, то какой от него толк?

    F3:50 | push eax

    В данном вопросе я просто хочу услышать - несут ли прехиксы в таких ситуациях какую-нибудь смысловую нагрузку?
     
  5. AndNot

    AndNot New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    49
    Нет, не считая запудривания мозгов риперам :)
     
  6. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Спасибо. То что я и хотел услышать. закрыто.
     
  7. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Quark
    IA-32 Instruction Set Reference
    Use of the repeat prefixes with other IA-32 instructions is reserved and may cause unpredictable behavior. Some of the SSE and SSE2 instructions have three-byte opcodes. For these three-byte opcodes, the third opcode byte may be F2H, F3H, or 66H. For example, the SSE2 instruction CVTDQ2PD has the three-byte opcode F3 OF E6
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    leo
    угу, тоже хотел написать, то что для SSE/SSE2 комманд префикс строковый очень важен, и команда может по разному декодироватся.
     
  9. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    "rep nop" - интересная инструкция.
    "pause" тоже;)
    В сорцах wrk можно найти как реализацию YIELD макроса и KeYieldProcessor ф-ии.
     
  10. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Хм.. сделал f390 - в ольке работает как ноп. регистры, флаги не меняются. кроме eip.
     
  11. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    Quark
    Дык, вроде так и должно быть... или есть варианты?
     
  12. HoBleen

    HoBleen New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    77
    Вопрос на засыпку - скольно исключений может выкинуть стандартный ноп (90h)? =)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    HoBleen
    по крайней мере сингл степ =\
     
  14. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    HoBleen
    Согласно учению Intel:
    Согласно учению AMD:
    Ну и сингле-степ, брейкпойнт, но это уже не к инструкции, собссна... :):):)
     
  15. HoBleen

    HoBleen New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    77
    Да, но это не всё)

    Нет, только команда 90h, без префиксов! EIP указывает на память, начинающуюся с 90h, если так понятней)

    Не пойдёт, это уже изменение содержимого памяти...
     
  16. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ну дык тогда никакие.
    Может быть PAGE FAULT если EIP указывает на неприсутствующую страницу в которую будет подгружен nop.
    Но если
    то IMHO никакого не будет.
    Или какой ответ? Чего-то прикол не ясен :)
     
  17. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Может, выход EIP за пределы CS.Limit?
     
  18. HoBleen

    HoBleen New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    77
    Ну это уже несколько неточно... Откуда известно значение ячейки памяти, на которое БУДЕТ указывать eip после обработки исключения? Вопрос более точный - по eip стоит nop (реальный линейный адрес команды вычислим).

    Ага, #GP, а еще? =)

    Ниче особо хитрого, просто вопросик по работе х86 процессора =))
     
  19. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    Ну, если не ошибаюсь, на старых процах запоздалое исключение x87, если не использовалась fwait при определенных условиях... а отсюда при каких-то условиях может и #DF...
     
  20. Agent666

    Agent666 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    98
    #PF по исполнению кода в неисполняемой странице