Перейти к содержанию
    

Аппаратное умножение 24-битных чисел?

Хочу оптимизировать программу умножения 3-байтных чисел . За основу взял AVR200. Когда перешел с 2313 на мегу48 естественно возник вопрос как использовать mul для умножения 24-битных чисел с получением 48-битного результата?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вычистить ,а добавить. Только вопрос - КАК?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал. Вот что получилось:

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...