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

 
 
> asm на AVR, оптимальные конструкции
_Ivana
сообщение Jan 28 2012, 15:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Пишу третий в жизни проект, на AVR, на asm. До того было 2 успешных - на asm и на C. Писать надо именно на asm - по разным причинам. Я понимаю что можно написать на С и посмотреть что там сделает компилятор с оптимизатором, но пока хочется поковыряться самому sm.gif Общую логику и алгоритм работы уже составил, осталось красиво реализовать это на asm - оптимально не по размеру кода а по скорости при любых ветках ветвлений - то есть, если кусок кода будет делаться 50 тактов в 99 случаях и 1000 тактов в 1, то пусть лучше он каждый раз делается гарантированно по 500 тактов sm.gif
Возникают в изобилии коротенькие логически законченные куски для перевода в 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 написать...

Если есть что сказать - почитаю sm.gif За возможные синтаксические ошибки не пинайте - думаю, смысл понятен и так.

Сообщение отредактировал _Ivana - Jan 28 2012, 15:54
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _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
- - ReAl   Оффтоп — просто вспомнилось. Где-то когда-то в эха...   Feb 12 2012, 12:01
|- - Ruslan1   Маленькое замечание. В старозатертые времена у Май...   Feb 12 2012, 20:24
|- - demiurg_spb   Цитата(Ruslan1 @ Feb 12 2012, 23:24) Може...   Feb 13 2012, 05:22
|- - Ruslan1   Цитата(demiurg_spb @ Feb 13 2012, 07:22) ...   Feb 13 2012, 16:01
|- - _Pasha   Цитата(Ruslan1 @ Feb 13 2012, 20:01) Хм. ...   Feb 13 2012, 16:52
- - _Ivana   С наличием плавучей библиотеки то как раз проблем ...   Feb 13 2012, 16:32


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

 


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


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