Страница 1 из 1
Работа с вещественными числами на asm на AVR
Добавлено: Ср янв 19, 2011 15:25:28
SergeG
Здравствуйте.
Меня интересует работа с вещественными числам на ассемблере на МК AVR:
- запись вещ. числа в регистр
- сложение двух вещ. чисел
- умножение двух вещ.чисел
и т.д.
Где об этом можно почитать? Или может кто-то объяснит? Хватит и пары строчки строк))
Заранее благодарен!
Re: Работа с вещественными числами на asm на AVR
Добавлено: Ср янв 19, 2011 15:52:18
Vov123
Re: Работа с вещественными числами на asm на AVR
Добавлено: Ср янв 19, 2011 16:04:03
ARV
вот вам не пара, а даже одна строчка
вещественных чисел следует избегать всеми способами, разве что это вопрос жизни или смерти 
Re: Работа с вещественными числами на asm на AVR
Добавлено: Ср янв 19, 2011 16:06:32
SergeG
Спасибо) Идею понял)
Re: Работа с вещественными числами на asm на AVR
Добавлено: Чт янв 20, 2011 01:58:01
SII
На самом деле ничего фантастически сложного в вещественной арифметике нет, но работать на AVR она будет очень медленно -- собственно, именно поэтому надо стараться избегать их использования. Например, если нужно что-то выводить в метрах с сотыми (типа 3,07 м), можно все внутренние расчёты вести в сантиметрах, что избавляет от необходимости использовать числа с плавающей запятой.
Ну а в тех случаях, когда без плавающей запятой не обойтись, придётся писать свои или воровать чужие подпрограммы. Следует помнить, что и количество разрядов, которые можно представить числом, и максимальный диапазон зависят от размера числа. "Самыми стандартными" являются 4-, 8 и 10-байтовые вещественные числа, с которыми работают процессоры ПК (и не только они). Учитывая, что разрядность регистра AVR равна одному байту, одно число будет занимать от 4 до 10 регистров, так что, скорей всего, их надо будет передавать через память, особенно если речь идёт о "длинных" форматах.
Re: Работа с вещественными числами на asm на AVR
Добавлено: Пт янв 21, 2011 00:59:19
Jack_A
SII писал(а):На самом деле ничего фантастически сложного в вещественной арифметике нет, но работать на AVR она будет очень медленно -- собственно, именно поэтому надо стараться избегать их использования.
Ну а в тех случаях, когда без плавающей запятой не обойтись, придётся писать свои или воровать чужие подпрограммы
В общем-то верно, хотя воровать нехорошо. Можно попросить, например, старину Джека, ему не жалко.

)
Мне пришлось писа'ть плавучку для МК у которого не то, что фиксированной арифметики не было -- не было даже сдвига вправо ! И одна операция выполнялась от 14 до 42 циклов осциллятора ! Занятие для мазохистов, но деваться было некуда. Потом когда с этого уё....ща мигрировали на АВР. было ощущение, что из грязного болота попал в чистую реку. Код - раза в 2 короче, быстродействие - выше раз в 10! Причем пришлось писа'ть не только арифметику, но и функции: корень, синус-косинус, логарифм, экспонента...
"Но опыт есть!" (С) М.М.Жванецкий
Кстати, для сокращения времени выполнения и объема памяти у меня арифметика как раз нестандартная 3-байтовая : 1 байт порядок, 2 байта мантисса. Скрытый разряд не использовал - чуть проигрыш в точности ( для наших задач хватало ), но выигрыш в быстродействии.
Re: Работа с вещественными числами на asm на AVR
Добавлено: Сб янв 22, 2011 13:00:03
Jack_A
И сто лет ему это не было нужно.
Re: Работа с вещественными числами на asm на AVR
Добавлено: Сб янв 22, 2011 20:57:16
SII
Jack_A писал(а):Мне пришлось писа'ть плавучку для МК у которого не то, что фиксированной арифметики не было -- не было даже сдвига вправо !
И что это за урод такой, если не секрет?
Кстати, для сокращения времени выполнения и объема памяти у меня арифметика как раз нестандартная 3-байтовая : 1 байт порядок, 2 байта мантисса. Скрытый разряд не использовал - чуть проигрыш в точности ( для наших задач хватало ), но выигрыш в быстродействии.
Ну, это совершенно правильный подход, просто нужно заранее оценить необходимую точность и диапазон. Для опытного программиста это проблем не составляет, а вот для новичка -- проблематично.