01.11.2010, 14:54
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Stanislav_S
|
а смысл, сравнивать производительность на голом асме, ИМХО нет смысла, поскольку все равно прийдется писать на С (с вероятностью 99% ), поэтому от компиляторов особо никуда не денешся, да и не такие уж страшные задачи решаются на 8 - ми битках, чтобы выжимать все соки из камня, не те сейчас времена. Сравнивать надо по другим критериям, ИМХО конечно.
|
Асм только ради того чтобы исключить особенности компилятора и оставить голые возможности ядра. Например, в AVR я теоретически могу разместить две переменные в РОН и делать арифметику с ними, в STM8 это возможно только, если одну из переменных разместить в аккумуляторе другую в SRAM. Хотя любой компилятор Си поместит обе переменные в SRAM без разговоров, но могут быть наверное варианты с повышенной оптимизацией, когда он поступит более изощрённо.
Вот чтобы за всем этим не заморачиваться можно в асме руками разместить обе переменные в SRAM и пусть AVR и STM покажут, кто быстрее лазит в ОЗУ.
Писать программы в асме в наш век вряд ли кому-то вздумается, тут я с Вами полностью согласен.
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 15:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
Асм только ради того чтобы исключить особенности компилятора и оставить голые возможности ядра. Например, в AVR я теоретически могу разместить две переменные в РОН и делать арифметику с ними, в STM8 это возможно только, если одну из переменных разместить в аккумуляторе другую в SRAM. Хотя любой компилятор Си поместит обе переменные в SRAM без разговоров, но могут быть наверное варианты с повышенной оптимизацией, когда он поступит более изощрённо.
Вот чтобы за всем этим не заморачиваться можно в асме руками разместить обе переменные в SRAM и пусть AVR и STM покажут, кто быстрее лазит в ОЗУ.
Писать программы в асме в наш век вряд ли кому-то вздумается, тут я с Вами полностью согласен.
|
Я думаю на объективных примерах соотношение быстродействий будет равно соотношению частот, с поправкой на кол-во инструкций за такт.
В ОЗУ они лазят думаю одинаково.
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 16:58
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
С трудом вспоминал AVR ассемблер, но в итоге:
Несложное задание для STM8:
Исходные условия: Три восьмиразрядные переменные A, B и C разместить в SRAM.
Задание: Как можно быстрее:
1. Установить весь PORTA на выход;
2. Установить бит 0 в PORTA;
3. Проинициализировать переменную A = 1;
4. Проинициализировать переменную B = 2;
5. Уйти в подпрограмму;
В подпрограмме:
6. Сложить переменные A и B, результат поместить в C;
7. Вернуться из подпрограммы.
8. Если установлен бит 0 в PORTA, сбросить его.
Исходный код для AVR:
Код:
|
************************************************** *************************
.include "m16def.inc"
.equ A= $70 ;Адрес переменной A в SRAM.
.equ B= $71 ;Адрес переменной B в SRAM.
.equ C= $72 ;Адрес переменной C в SRAM.
.def rA= r16 ;РОН для переменной A.
.def rB= r17 ;РОН для переменной B.
.def rC= r18 ;РОН для переменной C.
;_________________________________________________ ____________________________
.org 0 ;Вектор сброса
rjmp reset
;_________________________________________________ ____________________________
reset: ;Инициализация програмного стека.
ldi RA,low(ramend)
out spl,rA
ldi RA,high(ramend)
out sph,rA
ldi rA,$ff ;НАЧАЛО ОТСЧЁТА ЦИКЛОВ
out ddra,rA ;PortA на выход.
sbi porta,0 ;Установить PortA.0
ldi rA,$01
sts A,rA ;Переменная A=1;
ldi rA,$02
sts B,rA ;Переменная B=2;
rcall SubRoutine ;Уход в подпрограмму.
sbic pina,0 ;Пропустить следующую команду, если PortA.0 сброшен.
cbi porta,0 ;Сбросить PortA.0 - КОНЕЦ ОТСЧЁТА ЦИКЛОВ
SubRoutine: lds rA,A ;Загрузить переменную A в РОН rA.
lds rB,B ;Загрузить переменную B в РОН rB.
add rA,rB ;Сложить rB+rA, результат в rA.
sts C,rA ;Сохранить результат сложения в переменную С в SRAM.
ret ;Возврат из подпрограммы. |
ATmega16 справился за 26 тактов.
Начало замера - PortA физически установился на выход (сброс счётчика циклов в ноль перед командой out ddra,rA).
Окончание - PortA.0 сбросился в единицу.
Применены инструкции непосредственного сброcа, установки и проверки бита в порту, которых у STM8 возможно нет. Тогда это будет не очень честно. Просьба повторить для STM8.
Можно тоже самое или что-то посложнее написать на Си для IAR
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 17:04
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
EugVor, Может без HollyWar обойдемся ?
__________________
Осторожно , злой кот
|
|
|
|
01.11.2010, 17:13
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
А это, что такое, если не секрет?
|
|
|
|
01.11.2010, 17:21
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
А это, что такое, если не секрет?
|
Священные войны
Это то чем обычно заканчиваются подобные сравнения .
И топик раздувается до немыслимых пределов , после чего в нем трудно найти чтолибо кроме ругани...
__________________
Осторожно , злой кот
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 17:28
|
|
Временная регистрация
Регистрация: 15.03.2006
Сообщений: 80
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Ясно, но... раз уж начали. Будем надеяться, что войны не будет ![Озадачен](images/smilies/icon_confused.gif)
Вроде в личном плане не должно быть так уж важно кто круче AVR или STM8. Пусть Atmel беспокоиться, а мы просто выберем, что вкуснее.
|
|
|
|
01.11.2010, 17:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от EugVor
|
А это, что такое, если не секрет?
|
Вот что
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 18:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от dosikus
|
EugVor, Может без HollyWar обойдемся ?
|
Это не холивар. Холивар это когда без цифр, все чисто на эмоциях. Вечером напишу аналог под STM8. Может даже на ассемблере попробую
Сообщение от EugVor
|
Применены инструкции непосредственного сброcа, установки и проверки бита в порту, которых у STM8 возможно нет. Тогда это будет не очень честно. Просьба повторить для STM8.
|
Ветку Вы явно не читали. ![Улыбка](images/smilies/icon_smile.gif) У STM8 таких инструкций нет, ему все равно - порт это или ОЗУ. Есть например команда установки/сброса бита и она работает с адресом, а уж что там по этому адресу ей неважно. Может быть вообще еепром ![Улыбка](images/smilies/icon_smile.gif)
ЗЫ. В общем у меня новая мать, проц и память, так что продолжение скоро последует. Как только софт весь установлю.
Последний раз редактировалось Falconist; 13.04.2011 в 23:17.
|
|
|
|
01.11.2010, 19:22
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Это не холивар. Холивар это когда без цифр, все чисто на эмоциях. Вечером напишу аналог под STM8. Может даже на ассемблере попробую
|
Холивар, холивар ![Улыбка](images/smilies/icon_smile.gif)
Как раз когда начинаются цифры, холивар переходит в стадию "необратимый". Тем более, что как и положено в холиварах, тестовый пример взят ни о чем.
Последний раз редактировалось Falconist; 13.04.2011 в 23:16.
|
|
|
Сказали "Спасибо" testerplus
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:45.
|
|