XMM как правило хорошего тона

Тема в разделе "WASM.ASSEMBLER", создана пользователем MrMiXeR, 22 дек 2008.

  1. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    на днях прочёл пару статей про MMX и понял что они вне конкуренции, вот хотелось бы попросить знатоков поделиться из своих закромов справочничком на русском языке по этой теме и желательно с примерами, по инету проползал, все коленки ободрал, встречал кое-где отрывками описания, но примеров видел мало, да уверен и функции видел не все. Если есть у кого-нибудь полный справочник на русском (желательно с примером) - заделитесь плз, в образовательных целях :)
     
  2. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Когда разберёшься как по какому принципу строятся мнемонические команды - тогда всё станет легко. Вот что присутствует в мнемонике

    SIMD для floating point:
    [h] - horizontal операции
    op - код операции
    [op] - код операции2 для сложных инструкций
    [L|h] - обозначает какая часть приёмника/источника подвержена операции op: low|high
    [[L|h]] - если присутствует, то обозначает куда будет помещён результат операции op в зависимости от предыд. мнемоники. Возможно: L->h, h->L
    [a|u] - aligned|unaligned. Говорит о требованиях к выравниванию операнда(ов) в памяти: a - выравнивание на границу в 16 байт требуется, u - не требуется
    [nt] - non temporal. Говорит о некэшируемости операндов в памяти
    [s|p] - scalar/packed операция op над данными (для h префикса только p)
    s|d - single/double precision. Размерность данных в операндах. (float/double)
    [2] - "to". Возникает при операциях op конвертации.
    [s|p] - scalar/packed вид данных операнда. Возникает 2й раз в операциях конвертации после "2"
    [s|d] - single/double precision. Размерность данных в операндах. (float/double). Возникает 2й раз в операциях конвертации после "2" и вида данных операции op
    [[h|L]] - high|low. Присутствует, если используется мненмоника DUP (см.ниже). Указывает расположение данных в операндах источниках для выполнения операции op
    [dup] - duplicate. Может возникнуть при дублировании частей операндов источников в операнде приёмнике после выполнении операции op

    %: addps, haddps, addsubpd, movhlps, andps, movaps, movntpd, movshdup...


    SIMD для integer:
    [p] - packed. Присутствует всегда за исключением малого количества некоторых операций op
    [h] - horizontal операции
    op - код операции
    [op] - код операции2 в сложных операциях
    [s|us] - signed|unsigned saturation. Тип насыщение при операции op: знаковое|беззнаковое. Если отсутствует, то без насыщения (wrap around арифметика)
    [L|h] - low|high. Обозначает какая часть приёмника/источника подвержена операции op
    [nt] - non temporal. Говорит о некэшируемости операндов в памяти
    [b|w|d|q|dq] - byte|word|dword|qword|dqword. Размер упакованных операндов источников
    [[2]] - "to". Может возникнуть при операции op над данными при разных типах операндов источника и приёмника: MMX и XMM регистров. "2" говорит о направлении действия операции op над данными. Возможно: Q2DQ, DQ2Q
    [[b|w|d|q|dq]] - byte|word|dword|qword|dqword. Размер упакованных данных операции op. Осуществляется преобразование от меньшей разрядности операций (см.в предыдущ. мнемонику) к большей (см. эту). Возможно от b->w, w->d, d->q... Если отсутствует, то размер рузультата упакованных данных остаётся неизменным (т.е. см. предыд. мнемонику)
    [a|u] - aligned|unaligned. Говорит о требованиях к выравниванию операнда(ов) в памяти: a - выравнивание на границу в 16 байт требуется, u - не требуется

    %: paddb, phsubw, psubusb, punpckhbw, pand, movntdqa, movdqu...


    Поставлю себе авторство что ли;) (с)asmfan
     
  3. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    У Зубкова они вроде были. "Ассемблер для DOS, windows, UNIX"
     
  4. MrMiXeR

    MrMiXeR New Member

    Публикаций:
    0
    Регистрация:
    27 июн 2008
    Сообщения:
    97
    хм, ща посмотрим
     
  5. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.734
    http://students.uni-vologda.ac.ru/pages/it10/
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
  7. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Юрий Магда - Ассемблер для процессоров Intel Pentium
     
  8. airyashov

    airyashov New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2008
    Сообщения:
    12
    половина ссылок не паше, зачем пострить
     
  9. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    У меня работают.
     
  10. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Ты спалился :) Пользуешся FireFox.
    Там ссылки кривые, слэши от балды понаставлены в перемешку.
    Например:
    Код (Text):
    1. http://students.uni-vologda.ac.ru/pages/it10/MMXexpansion\MMXdescription.php
    Поисправляйте слэши на нормальные всё будет открываться.
    Открывают:
    IE 6
    Opera
    Google Chrome
    Safari открывает но не сложилось с кодировкой :)
    Не открывают:
    FireFox 2
    FireFox 3