ml 8 & movd

Тема в разделе "WASM.ASSEMBLER", создана пользователем IceStudent, 21 дек 2005.

  1. IceStudent

    IceStudent Active Member

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



    Наткнулся на непонятку:
    Код (Text):
    1. movd  mm0,[esi]  ; error A2070: invalid instruction operands


    Почему так? Ведь мнемоника указывает размер, второй операнд должен по идее интерпретироваться как DWORD ptr.



    И что более интересно:

    8.0.40426.16 - ругается (бета)

    8.0.40904.0 - не ругается (бета)

    8.0.50727.42 - ругается (релиз вроде).



    7е версии и меньше не ругаются. Кто прояснит ситуацию? Нужно ли указывать размер или это придирки?
     
  2. doctor_Ice

    doctor_Ice New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    845
    Адрес:
    Russia
    дворд птр пиши и не мучайся глупостями
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    doctor_Ice

    С какой стати я должен потакать придиркам масма? Меня интересует стандарт.
     
  4. leo

    leo Active Member

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

    Ну что можно ответить на риторический вопрос ? ;)

    Ему самое место в теме masm vs fasm :)

    Ес-но инструкция movd работает только с mem32 и требовать указания размера операнда в данном случае - это "придирка масма"



    PS: Хотя фиг его знает, надо уточнить - возможно Athlon 64 поддерживает movd mm,mem64
     
  5. leo

    leo Active Member

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

    Чего молчим ? Атлоновского мануала нет под рукой или и так все ясно ? ;)



    Действительно для Athlon 64 в 64-битном режиме определена инструкция mov mmx,reg64/mem64 (тот же опкод, что и для 32-бит, но с префиксом REX)

    Так что одно из двух - либо masm тупой и придирчивый, либо суперпродвинутый ;)
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Не сразу понял, как определять по доке, нужно ли указание размера.



    Да, там только mem32.



    Ещё штуковина: одна из версий ругается на mm0, MM0 ему подавай..



    Насчёт Атлона - что тут скажешь :)
     
  7. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    leo >




    И какое это имеет отношение к masm (ml.exe)? К ml64.exe - может быть :)
     
  8. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев


    мало ли, для тестирования на исключение :)) В принципе, конечно, это уже избыточно, в начале задано .MMX и точка.
     
  9. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    S_T_A_S_ > "И какое это имеет отношение к masm (ml.exe)?"

    Никакого, просто притянутая за уши отмазка для приверженцев масма ;)



    PS: "Глубокомысленные" прибамбасы масма наверное уже никого не удивляют. Но вот как AMD додумалось использовать мнемонику movd для пересылки qword'ов не понятно - логичнее было бы movq использовать (пусть даже с опкодом movd, если у них напряг с эти делом)