Отговори на тема  [ 85 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща
Оптимизиране на код? 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Чет Ное 25, 2004 3:42 pm
Мнения: 913
Мнение 
Device = 16F628A ' This will be ignored once inside MPLAB
OPTIMISER_LEVEL = 6
HSERIAL_BAUD = 9600 ' Set baud rate to 9600
HSERIAL_RCSTA = %10010000 ' Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000 ' Enable transmit and asynchronous mode
HSERIAL_CLEAR = On ' Optionally clear the buffer before receiving
Declare HSERIAL_PARITY = ODD


Dim F1 As Float
Dim F2 As Float
Dim F3 As Float
While 1 = 1 ' Create an infinite loop
F1 = 3.14
F2 = 6.28
F3 = F1*F2
Wend ' Do it
HRSOut F3


Ами гледам ама на мене ми дава друго
198 команди
и 33 променливи
За това си мисля че правим различни неща


Вто Май 30, 2006 7:37 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами Цецо наистина изхвърлянето на безмислени части от кода са глупости.
Използването на общи части от различни сорс фаилове при компилацията им заедно също и всекакви трикове които правят компилаторите за нас са глупсти също.
Съгласен съм :)


Вто Май 30, 2006 7:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Прати го на PORTB тогава стават 307 байтовете.


Вто Май 30, 2006 7:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
SEGMENT SPACE START ADDRESS END ADDRESS SIZE TYPE ALIGN
======= ===== ============= =========== ==== ==== =====
INTVEC CODE 0000 - 0001 2 com 1
RCODE CODE 0002 rel 1
<CODE> 1 CODE 0002 - 0003 2 rel 1
SCODE CODE 0014 - 0015 2 rel 1

****************************************
* *
* END OF CROSS REFERENCE *
* *
****************************************

139 bytes of CODE memory
39 bytes of DATA memory

Errors: none
Warnings: none

за IAR


Вто Май 30, 2006 7:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Какво пак съм изръсил :? :oops:


Вто Май 30, 2006 7:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
За кое?


Вто Май 30, 2006 7:58 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Чет Ное 25, 2004 3:42 pm
Мнения: 913
Мнение 
Да пращаме плаваща запетая на порта не е много коректно.
Може да се направи по много начини и се получават различни резултати (много различни)
По добре като мене го пращай по RS-a .
Както съм го направил на горния пример


Вто Май 30, 2006 8:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Nikola Kirov написа:
За кое?

Ти си го изтрил - кво са правиш 8) .

rumen написа:
Да пращаме плаваща запетая на порта не е много коректно.

Ами то трябва да е все тая дали ще го запишеш в регистъра на порта, или в регистъра на серийния интерфейс. Или ще си избираме само тоя код дето бейсика го "оптимизира" по-добре 8)


Вто Май 30, 2006 8:41 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Чет Ное 25, 2004 3:42 pm
Мнения: 913
Мнение 
Порта е 8 бита.
А Плаващата запетая с нейнети ехпонента и мантиси.
Не е ясно кой компилатор какво праща на порта.
Затова предложих серина комуникация.
Нали целта беше резултата да се ползва.


Вто Май 30, 2006 8:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Димитъре сега се сетих то беше за по малко от минута. Бях натиснал Quote на нпредишната си тема и после се отказах и не бях изттрил всичко. Сорри. Кога пък свари да го прочетеш

аз съвсем коректно съм предал в моята компилация 4 рите баита на float-a.

char * fP = (char *) (&F3);

SerialSent(fP); fP++;
SerialSent(fP); fP++;
SerialSent(fP); fP++;
SerialSent(fP);

и така на високо ниво на оптимизация ми излязоха 139 баита.

ама в Protona надали
HRSOut F3 прави това виж какво ти излиза на порта
:)


Вто Май 30, 2006 9:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
rumen написа:
Порта е 8 бита.
А Плаващата запетая с нейнети ехпонента и мантиси.
Не е ясно кой компилатор какво праща на порта.
Затова предложих серина комуникация.
Нали целта беше резултата да се ползва.

Регистъра на порта, както и регистъра на серийния канал са все 8 бита и са на едно и също място - т.е. от гледна точка на компилатора е без значение дали ще записваш резултата в PORTB или в ТXREG. А това, че пращам там само един байт от float-а вместо целия едва ли оказва някакво значение.


Последна промяна Dimitar на Вто Май 30, 2006 9:19 pm, променена общо 1 път



Вто Май 30, 2006 9:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Nikola Kirov написа:
...Кога пък свари да го прочетеш...

Че аз освен да рефрешвам форума - мислиш ли, че правя нещо друго в тая жега 8) :lol: :?


Вто Май 30, 2006 9:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
И стига си пробвал да си мериш пишката. Пиша по тая тема само за да не си мислят начинаещите че може да се работи професионално с такива изгъзици като протона.

А ако имаше малко акоъл в главата щеше да се сетип че кода генериран за такива малки фрагменти не е показателен.

Показателно е кога се компилира нещо голямо с 1000-2000 реда код поне.
Като си направи IAR-a опримизацията на ниво цял проект в сравнение с протона ще отиде на наполовина по малко код най вероятно. А да не забравяме с тоя синтаксис на беисика как неприятно се правят алгоритми и по сложни изгъзици.
Явно се мъчиш да се оправдаеш за пред себе си че не можеш да се оправиш с C-to и затова все налиташ да разправяш колко добър бил тоя протон.
Спри да се излагаш


Вто Май 30, 2006 9:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Dimitar написа:
. А това, че пращам там само един байт от float-а вместо целия едва ли оказва някакво значение.


ами няколко баита повече са. Но протона да не мислиш че праща повече от един байт. И аз се усетих че така ще ми излезе по дълъг кода и сравнението няма да е коректно щях да преправям,ама като видях че пак е по напред се отказах :)


Вто Май 30, 2006 9:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Nikola Kirov написа:
Показателно е кога се компилира нещо голямо с 1000-2000 реда код поне.
Като си направи IAR-a опримизацията на ниво цял проект в сравнение с протона ще отиде на наполовина по малко код най вероятно.

Аз това имах предвид де. Щото знам как оптимизира IAR-а за RISK процесори проекти със по 20-25000 реда код и как след това като погледна листинга на асемблер и няма къде да се захвана една инструкция да сменя. Та затова ми беше чудно в началото аджеба тоя протон какво и как оптимизира та да ги прави тея фокуси. Ама явно е ала-бала. То не случайно едно време бейсика беше език за децата (и още е де) 8) . Но въпреки всичко най-големия проблем според мен е преносимостта на кода и чак след това идва колко оптимален е той. Щото е супер безмисленно да си направиш една камара библиотеки на бейсик за пикове и после като ти трябва да пишеш за някой друг процесор да трябва да си ги правиш и начекваш библиотеките наново. Когато се заниваш на ниво хоби - това няма значение, но ако си вадиш хляба с това - вече времето е от огромно значение. Спора е на същата основа както и PIC vs. Другите чипове - просто каквито и да са другите качества - най-важното е времето до реализацията - нищо друго. Поне на мен приоритетите ми бяха (и сега в някой случай са 8) ) такива.


Вто Май 30, 2006 9:27 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 85 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни