Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
12 / 12 / 0
Регистрация: 06.06.2010
Сообщений: 50

Найти сумму чисел матрицы двумя способами с mmx и без

13.05.2011, 09:17. Показов 1457. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание в том что нужно найти сумму чисел матрицы двумя способами с mmx и без...я вроде написала но у меня почему то разные результаты.где ошибка?второй способ правильно работает,а первый нет!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
 #include "stdafx.h"
 
 
 #include "stdio.h"
 #include "windows.h"
 int main(int argc, char* argv[])
 {
 short a_array[4][4]; //матрица 4*4
 short cnt = 16; //число эл-тов
 int res = 0, res1 = 0; 
 int Time1, Time2, Delay1; //для хранения времени
 double Speedup;
 for (int i=0; i<4; i++)
 for (int j=0; j<4; j++)
 
 {
 a_array[i][j] = i*4+j;
 }
 printf("\nScalar product with or without MMX...\n\n");
 printf("\nResult = %d\n", res);
 printf("Result1 = %d\n", res1);
 Time1 = GetTickCount();
 
 for (i=0; i<10000000; i++)
 {
 cnt = 16;
 __asm
 {
 push eax
 push ecx
 push esi
 xor esi, esi
 pxor MM7, MM7
 loop1:
 movq MM0, a_array[esi]
 movq MM1, MM0
 pmaddwd MM0, MM1
 paddd MM7, MM0
 add esi, 8
 sub cnt, 4
 jnz loop1
 movq MM0, MM7
 psrlq MM7, 32
 paddd MM7, MM0
 movd res, MM7
 emms
 pop esi
 pop ecx
 pop eax
 }
 }
 Time2 = GetTickCount();
 
 printf("\n Using MMX ...\n");
 printf("\nResult = %d", res);
 Delay1 = Time2 - Time1;
 printf("\nTime elapsed = %d ms\n", Delay1);
 
 Time1 = GetTickCount();
 
 for (i=0; i<10000000; i++)
 {
 cnt = 16;
 __asm
 {
 push eax
 push ecx
 push esi
 xor esi, esi
 xor ecx, ecx
 loop2:
 
 movsx eax, a_array[esi] 
 
 add cx, ax
 add esi, 2
 sub cnt, 1
 jnz loop2
 mov res1, ecx
 pop esi
 pop ecx
 pop eax
 }
 }
 Time2 = GetTickCount();
 
 printf("\n Without MMX ...\n");
 printf("\nResult1 = %d", res1);
 printf("\nTime elapsed = %d ms\n", Time2 - Time1);
 Speedup = float((Time2 - Time1))/float(Delay1);
 printf("\nMMX SpeedUp = %10.4f times\n\n", Speedup);
 return 0;
 }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2011, 09:17
Ответы с готовыми решениями:

Сложить две матрицы с использованием MMX и без. И посчитать время
Задача такая: Умножить матрицу А на число которое введет пользователь. Затем сложить матрицу А с В. И вывести результат. При этом нужно...

[MMX] Сложение чисел матрицы по главной диагонали
Если было то пожалуйста ссылку =) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; void main() { const int i =...

найти сумму элементов лежащих на [1,2], решить двумя способами:просто и с использованием массивов.
Здравствуйте! Помогите пожалуйста решить хотя бы одну из этих задач. 1)найти сумму элементов лежащих на , решить двумя способами:просто...

3
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
14.05.2011, 11:47
Так должно работать при условии, что cnt кратно 4.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
push    esi
mov     ecx,[cnt]
lea     esi,[a_array+ecx*2]
neg     ecx
pcmpeqd mm2,mm2
psrlw   mm2,15    ;mm2 = (1,1,1,1)
pxor    mm0,mm0
b:movq    mm1,[esi+ecx*2]
  pmaddwd mm1,mm2
  paddd   mm0,mm1
  add     ecx,4
jnz b
movq    mm1,mm0
psrlq   mm1,32
paddd   mm0,mm1
movd    [res],mm0
emms
pop     esi
0
12 / 12 / 0
Регистрация: 06.06.2010
Сообщений: 50
14.05.2011, 11:55  [ТС]
Цитата Сообщение от murderer Посмотреть сообщение
Так должно работать при условии, что cnt кратно 4.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
push    esi
mov     ecx,[cnt]
lea     esi,[a_array+ecx*2]
neg     ecx
pcmpeqd mm2,mm2
psrlw   mm2,15    ;mm2 = (1,1,1,1)
pxor    mm0,mm0
b:movq    mm1,[esi+ecx*2]
  pmaddwd mm1,mm2
  paddd   mm0,mm1
  add     ecx,4
jnz b
movq    mm1,mm0
psrlq   mm1,32
paddd   mm0,mm1
movd    [res],mm0
emms
pop     esi
ошибку выдает в этой строчке! lea esi,[a_array+ecx*2].
скиньте полный текст проги!может я не так пишу!
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
14.05.2011, 14:06
Объяви cnt как long.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2011, 14:06
Помогаю со студенческими работами здесь

Найти натуральное число представимое двумя разными способами суммой кубов двух чисел
Найти натуральное число n, которое подается двумя разными способами суммой кубов двух натуральных чисел:n = x^3 + y^3 (x&lt;=y) ...

Найти наименьшее натуральное число, представимое двумя различными способами в виде суммы кубов двух натуральных чисел
Найти наименьшее натуральное число n, представимое двумя различными способами в виде суммы кубов двух натуральных чисел

Вычислить сумму ряда двумя способами
S=\sum_{i=1}^{n}\frac{{x}^{i}}{{4i}^{2}} СУММА РЯДОВ ДВУМЯ СПОСОБАМИ. Этап 1. Физическая постановка задачи • Дано: ?–...

Вычислить сумму ряда двумя способами
помогите решить задачу двумя способами: 1) задается n слагаемых, используется цикл for 2) задается точность ε, определяющаяся как...

Вычислить частичную сумму ряда двумя способами
Подскажите как можно вычислить частичную сумму ряда такого типа? Расчет нужно произвести двумя способами: при помощи итерационного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru