|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.10.2010, 13:21 | #1 |
Новичок
Джуниор
Регистрация: 27.10.2010
Сообщений: 4
|
MMX сложить два числа
всем привет!
Помогите решить задачу: нужно сложить два числа с помощью MMX комманд в программе на C. Как это сделать? Можно ли сложить два дробных числа? |
27.10.2010, 13:27 | #2 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Цитата:
Последний раз редактировалось Mikl___; 27.10.2010 в 13:42. |
|
27.10.2010, 13:28 | #3 |
Новичок
Джуниор
Регистрация: 27.10.2010
Сообщений: 4
|
так мне и нужно на ассемблере
|
27.10.2010, 14:06 | #4 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
gansm
MMX это параллельная обработка. Арифметические MMX-команды работают с упакованными байтами и словами со знаком и без знака, а также с упакованными двойными словами со знаком. Они могут использовать как циклическую арифметику, так и арифметику с насыщением. Для сложения дробных чисел используют FPU Складывать два числа через MMX -- это как микроскопом колоть орехи Команды MMX работают с 64-разрядными целочисленными данными, а также с данными, упакованными в группы (векторы) общей длиной 64 бита. Такие данные могут находиться в памяти или в восьми MMX-регистрах. Эти регистры называются MM0, MM1, ...MM7. Команды MMX работают со следующими типами данных: упакованные байты (восемь байтов в одном 64-разрядном регистре) -- packed byte упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) -- packed word упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) -- packed doubleword 64-разрядные слова -- quadword. MMX-команды имеют следующий синтаксис: instruction dest, src instruction - имя команды, dest обозначает выходной операнд, src - входной операнд. Большинство MMX-команд имеют суффикс, который определяет тип данных и используемую арифметику: US(unsigned saturation) - арифметика с насыщением, данные без знака. S или SS(signed saturation) - арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound). B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая - выходному. MMX- команды сложения: PADDB mm, mm/m64; PADDW mm, mm/m64; PADDD mm, mm/m64 складываются элементы данных (байты, слова или двойные слова) входного и выходного операнда. Если сумма выходит за границу допустимого диапазона, то по правилам циклической арифметики избыток отсчитывается от другой границы диапазона. "Переноса" единицы из одного элемента данных в другой не происходит. PADDSB mm, mm/m64; PADDSW mm, mm/m64 складываются элементы данных (байты или слова) входного и выходного операнда. Если сумма выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение. PADDUSB mm, mm/m64; PADDUSW mm, mm/m64 складываются элементы данных (байты или слова) входного и выходного операнда. Если сумма выходит за граничное значение допустимого диапазона, то результатом считается это граничное значение. Последний раз редактировалось Mikl___; 27.10.2010 в 14:24. |
27.10.2010, 14:25 | #5 |
Новичок
Джуниор
Регистрация: 27.10.2010
Сообщений: 4
|
спасибо за ответ.
я это все читал. мне бы пример именно с двумя числами. я не силен в asm |
27.10.2010, 14:30 | #6 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
movq mm0,[esi];первый вектор в mm0
movq mm1,[edi];второй вектор в mm1 paddb mm0,mm1; результат сложения в mm0 |
27.10.2010, 14:37 | #7 |
Новичок
Джуниор
Регистрация: 27.10.2010
Сообщений: 4
|
на сколько я понимаю, это получится сложение 8ми байтовых чисел?
а мне нужно два int числа, например a=1000, b= 23000. как посчитать сумму a+b? |
28.10.2010, 03:48 | #8 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
Цитата:
B очередной раз спрашиваю, а при чем здесь MMX? Код:
|
|
28.10.2010, 09:22 | #9 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
Код:
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
28.10.2010, 10:04 | #10 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
airyashov
зачем грузить в mm1, если можно непосредственно paddq mm0,b? Для понту бандитского? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сложить два числа с плавающей точкой | forsy | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 19 | 29.03.2010 02:15 |
Макрос: сложить два числа | белочка | Microsoft Office Excel | 6 | 23.12.2009 22:02 |
сложить 2 числа | breate | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 04.11.2009 23:06 |
Сложить два числа и вывести результат на экран | We1c0m3 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 23.05.2009 11:41 |
Сложить два числа | iwaniwan | Win Api | 3 | 23.04.2009 06:27 |