Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Требуется формат команд MMX , XMM , 3DNow!

Аноним
Я пишу свой ассемблер. Пока сделал только блок, ответственный за целочисленные команды, а вот по машинному формату команд MMX ,XMM, 3DNow! ничего не нашел. Если у кого-то есть какая-либо информация, пришлите пожалуйста на [EMAIL]ksicom@rambler.ru[/EMAIL]

Заранее спасибо!
461
31 января 2002 года
gerard
102 / / 20.12.1999
Все команды MMX имеют одинаковый формат сначала префикс 0Fh, затем код команды, затем байт режима адресации (в обычном формате (mod)(r)(r/m), только r означает номер MMX-регистра), затем - остальные байты (как в обычных командах).

Коды команд таковы

EMMS 77h
MOVD r, r/m 6Eh
MOVD r/m, r 7Eh
MOVQ r, r/m 6Fh
MOVQ r/m, r 7Fh
PACKSS r, r/m 63h
PACKSS r/m, r 6Bh
PACKUS r, r/m 67h
PADDB r, r/m FCh
PADDW r, r/m FDh
PADDD r, r/m FEh
PADDSB r, r/m ECh
PADDUSB r, r/m DCh
PADDSW r, r/m EDh
PADDUSW r, r/m DDh
PAND r, r/m DBh
PANDN r, r/m DFh
PCMPEQB r, r/m 74h
PCMPGTB r, r/m 64h
PCMPEQW r, r/m 74h
PCMPGTW r, r/m 65h
PCMPEQW r, r/m 74h
PCMPGTQ r, r/m 66h
PMADDWD r, r/m F5h
PMULHW r, r/m E5h
PMULLW r, r/m D5h
POR r, r/m EBh
PSLLW r, r/m F1h
PSLLW r, i8 71h
PSLLD r, r/m F2h
PSLLD r, i8 72h
PSLLQ r, r/m F3h
PSLLQ r, i8 73h
PSRAW r, r/m E1h
PSRAW r, i8 71h
PSRAD r, r/m E2h
PSRAD r, i8 72h
PSRLW r, r/m D1h
PSRLW r, i8 71h
PSRLD r, r/m D2h
PSRLD r, i8 72h
PSRLQ r, r/m D3h
PSRLD r, i8 73h
PSUBB r, r/m F8h
PSUBW r, r/m F9h
PSUBD r, r/m FAh
PSUBSB r, r/m E8h
PSUBUSB r, r/m D8h
PSUBSW r, r/m E9h
PSUBUSW r, r/m D9h
PUNPCKHBW r, r/m 68h
PUNPCKLBW r, r/m 60h
PUNPCKHWD r, r/m 69h
PUNPCKLWD r, r/m 61h
PUNPCKHDQ r, r/m 6Ah
PUNPCKLDQ r, r/m 62h
PXOR r, r/m EFh

Эти команды имеются в Pentium II/Pentium MMX.
В Pentium III добавлены следующие команды

MASKMOVQ r1, r2 F7h
MOVNTQ r/m, r 2Bh
PAVGB r, r/m E0h
PAVGW r, r/m E1h
PEXTRW r32, r, i8 C5h
PINSRW r, r/m, i8 C4h
PMAXUB r, r/m DEh
PMAXSW r, r/m EEh
PMINUB r, r/m DAh
PMINSW r, r/m EAh
PMOVMSKB r32, r D7h
PMULHUW r, r/m E4h
PREFETCH r/m 18h
PSADWB r, r/m F6h
PSHUFW r, r/m, i8 70h
SFENCE AEh F8h

В командах MOVD, PUNPCKL используются младшая половина MMX-регистра и 32-разрядная ячейка памяти, в остальных - полный MMX-
регистр и 64-разрядная ячейка памяти.

Команды XMM имеют аналогичный формат, только
r означает номер XMM-регистра

ADDPS r, r/m 58h
ADDSS r, r/m *58h
ANDNPS r, r/m 55h
ANDPS r, r/m 56h
CMPPS r, r/m C2h
CMPSS r, r/m *C2h
COMISS r, r/m *2Fh
UCOMISS r, r/m *2Eh
CVTPI2PS r, r/m 2Ah
CVTSI2SS r, r/m *2Ah
CVTPS2PI r, r/m 2Dh
CVTSS2SI r, r/m *2Dh
CVTTPS2PI r, r/m 2Ch
CVTTSS2SI r, r/m *2Ch
DIVPS r, r/m 5Eh
DIVSS r, r/m *5Eh
FXRSTOR m AEh(1)
FXSAVE m AEh(0)
LDMXCSR m AEh(2)
STMXCSR m AEh(3)
MAXPS r, r/m 5Fh
MAXSS r, r/m *5Fh
MINPS r, r/m 5Bh
MINSS r, r/m *5Bh
MOVAPS r, r/m 28h
MOVAPS r/m, r 29h
MOVHLPS r1, r2 12h
MOVHPS r, r/m 16h
MOVHPS r/m, r 17h
MOVLHPS r1, r2 16h
MOVLPS r, r/m 12h
MOVLPS r/m, r 13h
MOVMSKPS r32, r 50h
MOVUPS r, r/m 10h
MOVSS r, r/m *10h
MOVUPS r/m, r 11h
MOVSS r/m, r *11h
MULPS r, r/m 59h
MULSS r, r/m *59h
MOVNTPS m, r 2Bh
ORPS r, r/m 56h
RCPPS r, r/m 53h
PCPSS r, r/m *53h
RSQRTPS r, r/m 52h
RSQRTSS r, r/m *52h
SHUFPS r, r/m, i8 C6h
SQRTPS r, r/m 51h
SQRTSS r, r/m *51h
SUBPS r, r/m 5Ch
SUBSS r, r/m *5Ch
UNPCKHPS r, r/m 15h
UNPCKLPS r, r/m 14h
XORPS r, r/m 57h

Команды скалярных операций (помечены *)используют младшее двойное слово XMM-регистра и 32-разрядную ячейку памяти. Они имеют тот же код, что и соответствующие команды векторных операций, но перед ними нужно ставить два префикса - F3h 0Fh (кроме команд COMISS/UCOMISS).

Команды CVTPI2PS, CVTPS2PI, CVTTPS2PI, MOVLPS
используют младшую половину XMM-регистра и 64-разрядную ячейку памяти. Так же работает
и команда MOVHPS, только она использует старшую половину XMM-регистра.

Команды FXSAVE, FXRSTOR используют 512-байтную область памяти, а команды LDMXCSR и
STMXCSR - 4-байтную. Цифра, стоящая в скобках
после кода этих команд, помещается в байт режима адресации.

Остальные команды используют полный XMM-регистр и 128-разрядную ячейку памяти, содержашие 4 упакованых 32-разрядных вещественных числа.

[ Это Сообщение было отредактировано gerard в 2002-02-01 0531 ]
Аноним
Огромное спасибо!!!
461
01 февраля 2002 года
gerard
102 / / 20.12.1999
Не за что. Если будут еще вопросы - по кодам, по Ассемблеру или по самому процессору - всегда к вашим услугам.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог