на днях прочёл пару статей про MMX и понял что они вне конкуренции, вот хотелось бы попросить знатоков поделиться из своих закромов справочничком на русском языке по этой теме и желательно с примерами, по инету проползал, все коленки ободрал, встречал кое-где отрывками описания, но примеров видел мало, да уверен и функции видел не все. Если есть у кого-нибудь полный справочник на русском (желательно с примером) - заделитесь плз, в образовательных целях
Когда разберёшься как по какому принципу строятся мнемонические команды - тогда всё станет легко. Вот что присутствует в мнемонике 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
Ты спалился Пользуешся FireFox. Там ссылки кривые, слэши от балды понаставлены в перемешку. Например: Код (Text): http://students.uni-vologda.ac.ru/pages/it10/MMXexpansion\MMXdescription.php Поисправляйте слэши на нормальные всё будет открываться. Открывают: IE 6 Opera Google Chrome Safari открывает но не сложилось с кодировкой Не открывают: FireFox 2 FireFox 3