IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Перемножение матриц с помощью регистров и команд Xmm
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Надо вычислить A*(B+C+D), где A,B,C,D - квадратные матрицы 4х4
Со сложением справился, а умножение незнаю как...
Осталось умножить матрицу A на B=B+C+D
 
program xmm;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:array[0..3,0..3] of single;
b:array[0..3,0..3] of single;
c:array[0..3,0..3] of single;
d:array[0..3,0..3] of single;
i,j:integer;
begin
for i:=0 to 3 do
for j:=0 to 3 do a[i,j]:=4;
for i:=0 to 3 do
for j:=0 to 3 do b[i,j]:=3;
for i:=0 to 3 do
for j:=0 to 3 do c[i,j]:=2;
for i:=0 to 3 do
for j:=0 to 3 do d[i,j]:=1;
asm
lea eax,b
lea ebx,c
lea edx,d
lea esi,a
mov ecx,4
@repeat_1:
movups xmm0,[eax]
movups xmm1,[ebx]
movups xmm2,[edx]
addps xmm0,xmm1
addps xmm0,xmm2
movups [eax],xmm0
add eax,16
add ebx,16
add edx,16
loop @repeat_1
{?????????????}
end;
for i:=0 to 3 do begin;
for j:=0 to 3 do write(b[j,i]:0:0,' ');
writeln;
end;
readln;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 19:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name