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

 
 
> 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
 
Start new topic
Ответов
_Ivana
сообщение Feb 5 2012, 19:53
Сообщение #2


Местный
***

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



Цитата
Выглядит сомнительно. Плавучка не теряет точности целой части от того что появляется дробная. Вы точно убедились что это необходимо?

При увеличении абсолютного значения числа его точность (ака точность дробной части) теряется. Поэтому необходимо.
Цитата
А ещё в требуемой заказчиком mega48P запросто может нехватить программной памяти! Её там всего 4 кб. Мало.

Что делать - будем пытаться вписаться. Тем более, что на самом деле её там всего 512 байт rolleyes.gif
http://www.ekits.ru/index.php?productID=2567
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
- - 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 Текстовая версия Сейчас: 30th July 2025 - 02:25
Рейтинг@Mail.ru


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