Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.12.2006, 23:29
|
|
Временная регистрация
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Ассемблерная вставка в Си: Деление 24/24 или 24/16 бит (AVR)
Я в асме не силён...
У меня есть формула T=7812500/t , где T и t 16 битные переменные.
Помогите плиз примером чего-то подобного:
int div_24(char Hi,char Mid,char Lo, int t )
{
int Rez;
#asm
...Ассемблерная вставка деления 24 битной переменной на 16 битную.
#endasm
return Rez;
}
|
|
|
|
03.12.2006, 02:22
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: Ассемблерная вставка в Си: Деление 24/24 или 24/16 бит (
Сообщение от duritskiy
|
Я в асме не силён...
У меня есть формула T=7812500/t , где T и t 16 битные переменные.
Помогите плиз примером чего-то подобного:
int div_24(char Hi,char Mid,char Lo, int t )
{
int Rez;
#asm
...Ассемблерная вставка деления 24 битной переменной на 16 битную.
#endasm
return Rez;
}
|
Вот если честно, то ни фига не понял. Так вы пишете на Си или на асме? Си функция и ассемблерная вставка? Мсье знает толк в извращениях. Не проще ли поделить long на long средствами Си? Или вы думаете, что написанный вами кусок на асме будет работать значительно быстрее?
Уточните задачу...
|
|
|
|
03.12.2006, 03:12
|
|
Временная регистрация
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
в том то и дело что Лонг на Лонг делить не хочется.
А вот 24битное деление будет раза в полтора быстрее.
Если 16 битное делится примерно 45мкс, 32 - примерно 95мкс, то 24 битное наверное около 70мкс.
Для меня даже это будет очень хорошим плюсом.
|
|
|
|
03.12.2006, 14:54
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Сообщение от duritskiy
|
в том то и дело что Лонг на Лонг делить не хочется.
А вот 24битное деление будет раза в полтора быстрее.
Если 16 битное делится примерно 45мкс, 32 - примерно 95мкс, то 24 битное наверное около 70мкс.
|
Ну в таком случае проще всего взять за основу атмеловскую апноту с делением - и по образцу - сделать свою подпрограмму. Но:
- потеряете прилично времени на написание и отладку,
- ухудшится переносимость и читабельность,
- вполне возможно, что в этом месте оптимизатор компилятора толком работать не будет.
СтОит ли игра свеч? Зачастую бывает - оптимизируешь, изгаляешься, а потом МК крутится где-нить в цикле ожидания, бо делать ему нефиг...
PS Кстати я не поленился посмотреть сколько времени выполняется деление 32 на 32 (компилятор IAR 4.10, код для Mega8535). Подставлял разные данные. Не более 600 тактов - что при 8 МГц будет не более 75 мкс.
|
|
|
|
03.12.2006, 16:16
|
|
Временная регистрация
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
да, я тоже пробовал в IAR`е, он действительно шустрее чем CodeVisionAvr.
Наверное придётся окончательный вариант программы компилить под ИАРом.
Всёже не очень както удобно и привычно работать под ИАРом, хотя радует что настроек в нём более чем предостаточно, чтобы подогнать его под себя.
|
|
|
|
03.12.2006, 18:30
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,948
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Сообщение от duritskiy
|
да, я тоже пробовал в IAR`е, он действительно шустрее чем CodeVisionAvr.
|
Не зря он (говорят) порядка 1000$ стоит. Я ассемблер знаю неплохо, и когда смотрю код - упрекнуть почти что не в чем.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
PIC или AVR?
|
serj_neo |
Микроконтроллеры, АЦП, память и т.д |
2 |
15.05.2007 23:42 |
X51 или AVR
|
Andrewg |
Микроконтроллеры, АЦП, память и т.д |
21 |
04.07.2006 12:23 |
8051: Деление двойной точности, ассемблер
|
Alx_Jourey |
Микроконтроллеры, АЦП, память и т.д |
3 |
06.12.2005 13:40 |
Деление частоты входных импульсов
|
ZVNik |
Микроконтроллеры, АЦП, память и т.д |
2 |
12.07.2005 13:48 |
16 бит паралельный на USB-флеш по ON-the-GO или другую флеш
|
mig-25 |
Микроконтроллеры, АЦП, память и т.д |
1 |
24.03.2005 16:31 |
Часовой пояс GMT +4, время: 12:19.
|
|