реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Аппаратное умножение 24-битных чисел?, Дайте пример на асме.
alux
сообщение Aug 31 2005, 10:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Хочу оптимизировать программу умножения 3-байтных чисел . За основу взял AVR200. Когда перешел с 2313 на мегу48 естественно возник вопрос как использовать mul для умножения 24-битных чисел с получением 48-битного результата?
Go to the top of the page
 
+Quote Post
BVU
сообщение Aug 31 2005, 11:01
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 301
Регистрация: 30-11-04
Из: Россия, Н.Новгород
Пользователь №: 1 264



Попробуйте откомпилировать на C в IAR с максимальной оптимизацией умножение двуй 24-х битных чисел и посмотрите, как это выглядит в листинге на asm.


--------------------
Не корысти ради, не в целях наживы, а во исполнение велений души!
Go to the top of the page
 
+Quote Post
Rst7
сообщение Aug 31 2005, 11:14
Сообщение #3


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



AVR201: Using the AVR® Hardware Multiplier - и вычистить лишнее.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 31 2005, 11:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Не вычистить ,а добавить. Только вопрос - КАК?
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 31 2005, 12:29
Сообщение #5


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(alux @ Aug 31 2005, 17:39)
Не вычистить ,а добавить. Только вопрос - КАК?
*

В чем проблема-то при наличие аппаратного умножителя. Умножайте в столбик как обычно. 3 байта на 3 байта. Представьте, что имеется два трехразрядных числа (один разряд - один байт). Все очевидно.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
alux
сообщение Aug 31 2005, 14:33
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Попробовал. Вот что получилось:
ah:am:al * bh:bm:bl = c5:c4:c3:c2:c1:c0

_____________________________________

mul al,bl
movw c1:c0,r1:r0

mul am,bl
add c1,r0
adc c2,r1

mul ah,bl
add c2,r0
adc c3,r1

mul al,bm
add c1,r0
adc c2,r1

mul am,bm
add c2,r0
adc c3,r1

mul ah,bm
add c3,r0
adc c4,r1

mul al,bh
add c2,r0
adc c3,r1

mul am,bh
add c3,r0
adc c4,r1

mul ah,bh
add c4,r0
adc c5,r1
Go to the top of the page
 
+Quote Post
Karl
сообщение Sep 1 2005, 03:30
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 4-02-05
Пользователь №: 2 429



Примерно так. Только возможное переполнение после сложения надо учитывать.

clr tmp

mul al,bl
movw c1:c0,r1:r0

mul am,bl
add c1,r0
adc c2,r1
adc c3, tmp

mul al,bm
add c1,r0
adc c2,r1
adc c3, tmp

mul ah,bl
add c2,r0
adc c3,r1
adc c4, tmp


mul am,bm
add c2,r0
adc c3,r1
adc c4, tmp

mul al,bh
add c2,r0
adc c3,r1
adc c4, tmp

mul ah,bm
add c3,r0
adc c4,r1
adc c5, tmp


mul am,bh
add c3,r0
adc c4,r1
adc c5, tmp

mul ah,bh
add c4,r0
adc c5,r1
Go to the top of the page
 
+Quote Post
m16
сообщение Sep 1 2005, 08:10
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



http://elm-chan.org/cc_e.html
http://users.i.com.ua/~birua/
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 01:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016