· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› команда MOVAPS

Посл.отвђт Сообщенiе


Дата: Янв 17, 2004 01:40:29

Подскажите пожалуйста как правильно использовать команду MOVAPS... Дело в то что если просто применять эту команду то она генерирует какое то исключение... Я так понял что что то нужно еще... Заранее благодарен.


Дата: Янв 17, 2004 01:51:38 · Поправил: keYMax

MOVAPS xmm/m, xmm/m - команда копирует четыре FP-элемента одним из следующих способов:

из памяти в XMM-регистр
из XMM-регистра в память
из одного XMM-регистра в другой

Если не ошибаюсь, то обращение в память должно быть по адресу, кратному 16 байтам; в противном случае генерируется исключение.


Дата: Янв 17, 2004 02:00:12 · Поправил: emergenter

У меня массив из 32 элементов по 4 байта!
т.е. в EAX - начало массива
я делаю так:
xor ecx,ecx

cikl:

movaps xmm1,[eax+ecx]
add ecx, dword 16         ; смещение на 4 элемента по
                          ; 4 байта

cmp ecx, 128              ; 128 байт = 32 элемента по
                          ; 4 байта
jne cikl

Если не трудно подскажите чего не хватает для правильной работы movaps?


Дата: Янв 22, 2004 11:50:32

Что никто не пробывал чтоли?


Дата: Янв 22, 2004 22:22:32

Попробовал. Нужно поставить в секции .data директиву align 16. Т.е выровнять данные на границу 16 байт. Тогда в твоем коде не будет возникать ошибка.


Дата: Янв 28, 2004 20:07:45

keYMax
Спасибо за дельный совет.
А если у меня указатель на массив из другого модуля (к примеру)! Как тут быть?


Дата: Янв 28, 2004 20:33:43

emergenter
Также! Тебе необходимо будет позаботиться о том, чтобы твой массив был выравнен. Видимо, из-за этого и возникала ошибка.


Дата: Янв 29, 2004 10:41:08

dz 3BePIOra

Какие действия можно предпринять чтобы выровнять такой массив?


Дата: Янв 29, 2004 10:48:46

Ну, если модуль твой собственный, то ты сам хозяин данных и просто пиши перед определением требуемого массива ALIGN 16... В противном случае, я затрудняюсь сказать, как можно обойти проблему...


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069