|
asm на AVR, оптимальные конструкции |
|
|
|
Jan 28 2012, 15:48
|
Местный
  
Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710

|
Пишу третий в жизни проект, на AVR, на asm. До того было 2 успешных - на asm и на C. Писать надо именно на asm - по разным причинам. Я понимаю что можно написать на С и посмотреть что там сделает компилятор с оптимизатором, но пока хочется поковыряться самому  Общую логику и алгоритм работы уже составил, осталось красиво реализовать это на asm - оптимально не по размеру кода а по скорости при любых ветках ветвлений - то есть, если кусок кода будет делаться 50 тактов в 99 случаях и 1000 тактов в 1, то пусть лучше он каждый раз делается гарантированно по 500 тактов  Возникают в изобилии коротенькие логически законченные куски для перевода в asm. Например Код signed long int S = 0; float s = 0, ds = 0; signed char P = 0; ...... s = s + ds; if (s < 0) { s = 1 - s; S = S - 1; P = P - 1; if (P < 0) {P = 3} } elseif (s >= 1) { s = s - 1; S = S + 1; P = P + 1; if (P > 3) {P = 0} } В asm s и ds будут в формате с плавающей запятой. Думаю что буду использовать sbrc/sbrs их старшего бита - знака мантиссы. Позже напишу код который придумаю - покритикуете помидорами. А вот насчет Код P = P - 1; if (P < 0) {P = 3} .......... P = P + 1; if (P > 3) {P = 0} } придумал - я просто делаю inc/dec rP а потом мне надо найти красивую команду чтобы просто занулить его старшие 6 разрядов - пока точно не знаю какую - and или lsl rP, 6 + lsr rP, 6 Или еще пример Код float s, ds; unsigned char m; ...... if (ds < 1/128) m = 128 elseif (ds < 1/64) m = 64 elseif (ds < 1/32) m = 32 elseif (ds < 1/16) m = 16 elseif (ds < 1/8) m = 8 elseif (ds < 1/4) m = 4 elseif (ds < 1/2) m = 2 else m = 1 Написано коряво, только суть. Теперь буду думать как это красиво на asm написать... Если есть что сказать - почитаю  За возможные синтаксические ошибки не пинайте - думаю, смысл понятен и так.
Сообщение отредактировал _Ivana - Jan 28 2012, 15:54
|
|
|
|
|
 |
Ответов
|
Feb 13 2012, 16:01
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(demiurg_spb @ Feb 13 2012, 07:22)  Нет. Атмел ничего "такого" не делал. Максимум fixed-point арифметика в avr-gcc. Вы хотите сказать, что у Атмела в официальных аппнотах не предлагаются ассемблерные библиотеки для своих кристаллов для пишущих на ассме? Ни плавающей точки, ни тригонометрических функций? что-то слабо верится. Хм. хотя они вроде сразу нормальный Си предлагали, наверное тогда да, никто на ассемблере и не извращался в AVR. PS Упаси Боже подумать что хвалю одного производителя в угоду другому. Просто как-то сомневаюсь что у Атмела этого не было. Больше поверю что у них там это хитрозасунуто или вообще снесено с официальной страницы как устаревшее.... PPS Ну нет так нет.
|
|
|
|
Сообщений в этой теме
_Ivana asm на AVR Jan 28 2012, 15:48 SasaVitebsk Написано сумбурно и ничего не понятно.
Но если у в... Jan 28 2012, 17:27 _Ivana Продолжая сумбурные имхоизлияния:
Действительно,
К... Jan 28 2012, 21:13 =GM= Цитата(_Ivana @ Jan 28 2012, 21:13) Продо... Feb 3 2012, 07:48  demiurg_spb Цитата(=GM= @ Feb 3 2012, 10:48) зависит ... Feb 3 2012, 08:09   =GM= У товарища автора 13 идентичных каналов. Так что, ... Feb 3 2012, 08:24 _Ivana Пообщался с умными людьми, они мне вправили мозги ... Jan 29 2012, 09:41 _Pasha Ы! avr-libc
Берем , курим папочку /libm/fplib/... Jan 29 2012, 11:31 zombi Не буду утверждать на 100% что это правильно, но у... Jan 29 2012, 11:49 _Pasha Цитата(zombi @ Jan 29 2012, 14:49) Нифига... Jan 29 2012, 12:07 _Ivana _Pasha спасибо, покурю. Но одно из требований зака... Jan 29 2012, 12:02 sigmaN Если честно, то я не понимаю зачем плавучка на AVR... Jan 30 2012, 01:14 _Артём_ Цитата(sigmaN @ Jan 30 2012, 03:14) Если ... Jan 30 2012, 04:23 maksimp Цитата(sigmaN @ Jan 30 2012, 04:14) Мне к... Jan 30 2012, 05:53 _Pasha Цитата(sigmaN @ Jan 30 2012, 05:14) Если ... Jan 30 2012, 07:20 Xenia Те, кто согласны AVR32 тоже считать AVR-кой , могу... Jan 30 2012, 07:44 _Ivana Спасибо всем отписавшимся, а sigmaN - отдельное
С... Jan 30 2012, 15:48 _Pasha Насколько я помню, вычисления полинома 3 порядка в... Jan 30 2012, 21:32 _Ivana Цитатавычисления полинома 3 порядка в плавучке отн... Jan 30 2012, 23:03 _Pasha Цитата(_Ivana @ Jan 31 2012, 03:03) Сильн... Jan 31 2012, 04:27 _Pasha Цитата(_Ivana @ Jan 31 2012, 03:03) Сильн... Jan 31 2012, 04:27 MaslovVG Цитата(_Ivana @ Jan 31 2012, 03:03) ЗЫ ст... Feb 3 2012, 08:27  =GM= Ещё вот подумал об использовании фиксированной точ... Feb 3 2012, 08:53   maksimp Цитата(=GM= @ Feb 3 2012, 11:53) Ещё вот ... Feb 5 2012, 18:34    =GM= Цитата(maksimp @ Feb 5 2012, 18:34) В пла... Feb 7 2012, 14:37 sigmaN ЦитатаА куда девать численные методы, которые не о... Jan 31 2012, 21:00 _Ivana _Pasha, спасибо за ссылку, сейчас нет возможности ... Jan 31 2012, 21:30 sigmaN Ну удачи Ваи. Надеюсь оно того стоит...
Думаю зак... Feb 1 2012, 00:50 WHALE Может вам стоит подумать об оверклокинге?
Если не... Feb 1 2012, 05:19 _Pasha Если товарисч заказчег не понимает, я бы ограничил... Feb 1 2012, 05:51 _Ivana =GM= P в моем случае - это фаза (четверть) периода... Feb 3 2012, 17:19 sigmaN В плавучке...Ойй не нравится мне ваш заказчик... )... Feb 4 2012, 01:49 _Ivana ЦитатаВыглядит сомнительно. Плавучка не теряет точ... Feb 5 2012, 19:53 sigmaN Программная память = flash в данном случае. И её д... Feb 5 2012, 23:39 _Ivana Верно - я прокололся Просто чаще встречался с огр... Feb 6 2012, 10:54 _Ivana Возможно вас это позабавит, но я написал на 1С сим... Feb 11 2012, 09:15 sigmaN 1С? Нда.. Месье однако знает толк в извращениях и ... Feb 11 2012, 22:33 _Ivana Про Протеус и Маткад слышал, но ни разу не видел и... Feb 11 2012, 23:49 _Ivana С наличием плавучей библиотеки то как раз проблем ... Feb 13 2012, 16:32
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|