alux 0 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Хочу оптимизировать программу умножения 3-байтных чисел . За основу взял AVR200. Когда перешел с 2313 на мегу48 естественно возник вопрос как использовать mul для умножения 24-битных чисел с получением 48-битного результата? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BVU 0 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Попробуйте откомпилировать на C в IAR с максимальной оптимизацией умножение двуй 24-х битных чисел и посмотрите, как это выглядит в листинге на asm. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба AVR201: Using the AVR® Hardware Multiplier - и вычистить лишнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Не вычистить ,а добавить. Только вопрос - КАК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Не вычистить ,а добавить. Только вопрос - КАК? <{POST_SNAPBACK}> В чем проблема-то при наличие аппаратного умножителя. Умножайте в столбик как обычно. 3 байта на 3 байта. Представьте, что имеется два трехразрядных числа (один разряд - один байт). Все очевидно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alux 0 31 августа, 2005 Опубликовано 31 августа, 2005 · Жалоба Попробовал. Вот что получилось: 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Karl 0 1 сентября, 2005 Опубликовано 1 сентября, 2005 · Жалоба Примерно так. Только возможное переполнение после сложения надо учитывать. 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
m16 0 1 сентября, 2005 Опубликовано 1 сентября, 2005 · Жалоба http://elm-chan.org/cc_e.html http://users.i.com.ua/~birua/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться