02.11.2010, 08:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
А еще у STM только 1 регистр косвенной адресации... Это тоже сильно раздувает код. Вот пример сложения двух 4-байтных массивов ODIN и DVA и помещения результата в массив SYMMA
Занимает 16 слов (32 байта) памяти и выполняется 55 циклов. Все-таки 3 регистра косвенной адресации - лучше чем 1...
кто-нибудь может портировать на STM?
|
|
|
|
02.11.2010, 10:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
А еще у STM только 1 регистр косвенной адресации... Это тоже сильно раздувает код. Вот пример сложения двух 4-байтных массивов ODIN и DVA и помещения результата в массив SYMMA
Занимает 16 слов (32 байта) памяти и выполняется 55 циклов. Все-таки 3 регистра косвенной адресации - лучше чем 1...
кто-нибудь может портировать на STM?
|
Давайте сравнивать скорость работы стандартных алгоритмов,таких как сортировка,поиск маск/мин,цифровой фильтр,а не кусков непонятно чего.
Последний раз редактировалось Falconist; 13.04.2011 в 23:29.
|
|
|
|
02.11.2010, 10:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Gnider
|
Давайте сравнивать скорость работы стандартных алгоритмов,таких как сортировка,поиск маск/мин,цифровой фильтр,а не кусков непонятно чего.
|
Это имеете ввиду - декодер мп3 на 8-битнике?
Или надо было озаглавить предыдущий пост "стандартный алгоритм сложения многобайтных чисел"?
Именно из таких кусков "непонятно чего" и состоит реальная программа (я уж не говорю про шифрование - там и 3-х регистров косв.адресации бывает мало), а потом теряется быстродействие критических участков (вам ли не знать - иногда именно такой участок на десяток строк кода определяет тип и частоту всего контроллера) и раздувается код...
Я не пытаюсь разжечь холивар - просто сам до конца не могу разобраться: чье сочетание плюсов-минусов (семейств AVR и STM8 ) лучше для реальной задачи?
Последний раз редактировалось Falconist; 13.04.2011 в 23:29.
|
|
|
|
02.11.2010, 10:47
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
А еще у STM только 1 регистр косвенной адресации... Это тоже сильно раздувает код. Вот пример сложения двух 4-байтных массивов ODIN и DVA и помещения результата в массив SYMMA
Занимает 16 слов (32 байта) памяти и выполняется 55 циклов. Все-таки 3 регистра косвенной адресации - лучше чем 1...
кто-нибудь может портировать на STM?
|
Реально IAR не получается заставить использовать косвенную загрузку/сохранение с преддекрементом, он грузит указатели в обычные РОН, декременирует и снова засылает в SRAM... в итоге не меньше 250 тактов на всё:
Код:
|
unsigned char ODIN[4] ={1,1,1,1};
unsigned char DVA[4]= {2,2,2,2};
unsigned char SUMMA[4] ={0,0,0,0};
unsigned char *uDVA=DVA+5,*uSUMMA=SUMMA+5,*uODIN=ODIN+5;
unsigned char N=4;
void main( void )
{
do
{
*(--uSUMMA)=(*(--uODIN))+(*(--uDVA)); N--;
}
while (N!=0);
} |
А в асме конечно это всё без проблем пишется, но насколько реально применимо?!
Последний раз редактировалось Falconist; 13.04.2011 в 23:29.
|
|
|
|
02.11.2010, 10:49
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
Или надо было озаглавить предыдущий пост "стандартный алгоритм сложения многобайтных чисел"?
|
Числа вроде имелись в виду однобайтовые - по 4 в каждом массиве. Достаточно распространённая задачка.
Последний раз редактировалось Falconist; 13.04.2011 в 23:29.
|
|
|
|
02.11.2010, 11:06
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
Да… ассемблерный тест можно написать в угоду и тому и этому. А сишный компилятор в итоге всё опошлит и сведёт на нет все ассемблерные изюмины вроде установки отдельных бит одной инструкцией.
|
А я тоже считаю, что надо сравнивать работу после компилятора. Писать на ассемблере сейчас нет смысла, а соответственно хотелось бы посмотреть как проц справляется с реальной задачей. С учётом компиляции. Хотя это тоже не показатель. Вон на сахаре тесты лежат - на разных задачах - разные результаты.
Последний раз редактировалось Falconist; 13.04.2011 в 23:28.
|
|
|
|
02.11.2010, 11:31
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от niXto
|
А еще у STM только 1 регистр косвенной адресации... Это тоже сильно раздувает код. Вот пример сложения двух 4-байтных массивов ODIN и DVA и помещения результата в массив SYMMA
Занимает 16 слов (32 байта) памяти и выполняется 55 циклов. Все-таки 3 регистра косвенной адресации - лучше чем 1...
кто-нибудь может портировать на STM?
|
Вроде как адресация у STM более гибкая, а в качестве регистров косвенной адресации используется любая ячейка озу.
Вот в качестве примера ваша задача на STM,
достаточно просто, основной цикл всего шесть инструкций.
Код:
|
; указатель на первый массив
mov $0D,#$00
mov $0E,#$00
; указатель на второй массив
mov $0F,#$00
mov $10,#$04
; указатель на третий массив
mov $11,#$00
mov $12,#$08
;
ldw x, #$0
m1.l:
ld a, ([$0D.w],x)
add a,([$0F.w],x)
ld ([$11.w],x),a
incw x
cpw x,#$4
jrc m1 |
Это для случая когда нужно передавать указатели, а если расположение извество на этапе "компиляции" то можно ещё проще.
Я конечно не большой спец по STM и эта моя вторая программа на асме.
Последний раз редактировалось Falconist; 13.04.2011 в 23:28.
|
|
|
|
02.11.2010, 12:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Как я уже неоднократно говорил на дистанции все 8-битники очень похоже. Все дело только в эффективности компилятора и т.д.
Кусками исходняков на асме меряться бессмысленно.
|
|
|
|
02.11.2010, 12:52
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
IAR решает задачу за 308 тактов
Cosmic за 287 тактов
на асме за 67 тактов
все от инициализации массивов до окончания сложения и записи. оптимизация по скорости.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо zheleznjakov за это сообщение:
|
|
|
02.11.2010, 12:55
|
|
Временная регистрация
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Все-таки имхо основная цель темы - если не вернется AVR по прежним ценам, заменит ли его STM8 по функционалу...
Пока что вижу только один пункт, по которому проигрывает STM - отсутствие аналогового компаратора... какие на нем принципиальные вещи делаются, которые нельзя сделать без внешней обвязки на STM?
У меня был только случай, когда надо было читать переменный резистор на tiny2313, у которого нету АЦП. Но у STM АЦП есть практически у всех.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:55.
|
|