CMOVE

Тема в разделе "WASM.BEGINNERS", создана пользователем Twister, 25 янв 2007.

  1. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Столкнулся вот с какой бедой:
    В одном из исходников мне встретилась эта команда. Но MASM начал ругаться, мол камень твой не в том режиме (что за блин, исходник-то для Win32)... Порывшись в своих доках этой команды я не нашел. Гугл вообще посылает на страницы, связанные с Фортом. Вот и хотел спросить у Знающих - что за команда такая и чем ее можно заменить?
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    условный mov.
    cmove, если ZF=1, тогда пересылаем
    заменить можно типа так:
    Код (Text):
    1. je @f
    2. mov op1, op2
    3. @@:
     
  3. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Во! То что доктор прописал! Спасибо, n0name.
     
  4. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Совсем забыл...

    Я так понимаю, что возможны команды, типа CMOVNE, CMOVB и т.д. А есть у тебя справочник, более полный, чем мои?
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Twister
    Давно пора было поменять opcodes.hlp на x86eas.hlp :)
     
  6. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Код (Text):
    1. # Команда: CMOVcc приемник, источник
    2. # Назначение:Условная пересылка данных
    3. # Процессор:P6
    4.  
    5. Это набор команд, которые копируют содержимое источника в приемник, если удовлетворяется то или иное условие (см. табл. 5). Источником может быть регистр общего назначения или переменная, а приемником — только регистр. Условие, которое должно удовлетворяться, — просто равенство нулю или единице тех или иных флагов из регистра FLAGS, но, если использовать команды CMOVcc сразу после команды СМР (сравнение) с теми же операндами, условия приобретают особый смысл, например:
    6.  
    7.     cmp      ах,bх     ; сравнить ах и bх
    8.     cmovl    ax,bx     ; если ах < bх, скопировать bх в ах
    =))
    наверно у тебя что нибудь типа .386 в начале исходника написано?...
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Чего й то тут не то...
    Ну если просто, то поставь в начале .686
    Вот с этим согласен:
    А вот с этим нет:
    ИМХО текстом и кодом написаны разные вещи.
    cmove заменяется как
    Код (Text):
    1. jne @f
    2. mov op1,op2
    3. @@:
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    блин, действительно, очепятка. Я и хотел написать jne, только забыл =)
     
  9. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Чё такое?
    мне IntelAmdQuickRefV2_2.chm хватает =)
     
  10. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Quantum
    В точку.
    А второй - 386INTEL.TXT.
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    cmovcc появилось с 486 просто, а у тебя .386 наверное.
     
  12. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    вообще-то значительно позже -- P6 (.686)
     
  13. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    IceStudent
    Да. Ты прав. Сейчас поправлю.

    Вообщем, всем откликнувшимся спасибо. Скачал IntelAmdQuickRefV2_2.chm (с трудом нашел, надо заметить, на каком-то китайском сайте) - теперь подобных вопросов, достойных переноса в раздел BEGINNERS, думаю не возникнет... ;)
     
  14. KpeHDeJIb

    KpeHDeJIb New Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    24
    Перезалейте файлик IntelAmdQuickRef, куда-нибудь типа рапиды, заранее благодарен!
     
  15. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
  16. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    _BC_
    Точно, спутал с чем-то: "The CMOVcc instructions were introduced in the P6 family processors; however, these instructions may not be supported by all IA-32 processors."
     
  17. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    IceStudent
    Наверное с довольно "бестолковой" cmpxchg ;)