<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=14731&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-03-04T15:46:14+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=14731&amp;mode</id>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2016-03-04T15:42:43+01:00</updated>
<published>2016-03-04T15:42:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155426#p155426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155426#p155426"/>
<title type="html"><![CDATA[avr-gcc (linux) wersje gcc a rozmiar kodu wynikowego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155426#p155426"><![CDATA[
Napisałem, że hardcore <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />To normalne. Powody są takie:<br />albo masz _delay_ms() - wtedy się wywala, no bo jak?<br /><br />Masz wtedy taki warning:<br /><br />[syntax=bash]/home/tom/avr8-gnu-toolchain-linux_x86_64/avr/include/util/delay.h:95:3: warning: #warning &quot;Compiler optimizations disabled; functions from &lt;util/delay.h&gt; won't work as designed&quot; &#91;-Wcpp&#93;<br /> # warning &quot;Compiler optimizations disabled; functions from &lt;util/delay.h&gt; won't work as designed&quot;[/syntax]<br /><br />albo nie włożyłeś funkcji z kodem do osobnego pliku <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Można też użyć zamiast  <br />[syntax=bash]#pragma GCC pop_options[/syntax]<br /><br />dać<br /><br />[syntax=bash]#pragma GCC reset_options[/syntax]<br /><br />Działa, nawet jeśli jest wszystko w jednym pliku<br /><br />Jest też zależność od  flagi -fwhole-program - ona najczęściej jest z defaultu, ale tego nie ćwiczyłem - myślę że to dlatego trzeba dać w osobnym pliku...<br /><br />volatile działa tylko dla zmiennych, ale zauważyłem że czasem pomaga...<br /><br />Generalnie to ja w życiu nie kombinuję z optymalizacją <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 34 minutach ]</span></strong><br /><br />Zalączam projekcik (rozgrzebany, ale się kompiluje i działa) z optymalizacją<br />Biblioteka może ugryźć, lojalnie uprzedzam <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />A kurczę o najważniejszym zapomniałem. Jak chcesz jedną funkcję &quot;zdeoptymalizować&quot; można jeszcze tak:<br /><br />[syntax=c]void __attribute__((optimize(&quot;O0&quot;))) foo(uint8_t data) {<br />    // kod o który chodzi <br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 4 mar 2016, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kenubi]]></name></author>
<updated>2016-03-04T15:46:14+01:00</updated>
<published>2016-03-04T15:40:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155425#p155425</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155425#p155425"/>
<title type="html"><![CDATA[Re: avr-gcc (linux) wersje gcc a rozmiar kodu wynikowego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155425#p155425"><![CDATA[
To wszystko mam, i wołany &quot;goły gcc&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />, prócz &quot;-S&quot; to się przydało (dzięki!), nie mnożenie (zmyliło mnie &quot;__mulhi8&quot; -te ~mull) a dzielenie było  problemem.<br />uint8_t trivdiv( uint16_t dzielna, uint8_t dzielnik) {..}<br />gdy wołałem to tak: x8t = trivdiv( dzielna16t, dzielnikt8t) - kompilator wołał &quot;moją&quot; funkcję<br />gdy wołałem to: x8t = trivdiv( dzielna8t, dzielnik8t) - kompilator wytworzył do tego jednego inny/oddzielny i spory kod.<br /><br />OK, zastąpiłem mnożenia przez przesunięcia np. (*3) &quot;x&lt;&lt;1 + x&quot;, <br />poprawiłem trochę kod i teraz mam &quot;wsad&quot; 1006 bajtów - he, zaszaleję, może wcisnę jeszcze jaką funkcjonalność <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />.<br /><br />@sq5rix volatile nie działało (próbowałem, a niech tam), dla zmiennej to oczywiście działa<br /><br />dzięki<br />ps.edit, dla jasności<br />[syntax=c]uint8_t trivdiv(uint16_t dzielna,uint8_t dzielnik) {<br />uint8_tiloraz=0;<br />for (;dzielna&gt;=dzielnik;iloraz++) { dzielna-=dzielnik; }<br />return iloraz;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12667">kenubi</a> — 4 mar 2016, o 15:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sq5rix]]></name></author>
<updated>2016-03-04T14:24:54+01:00</updated>
<published>2016-03-04T14:24:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155417#p155417</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155417#p155417"/>
<title type="html"><![CDATA[avr-gcc (linux) wersje gcc a rozmiar kodu wynikowego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155417#p155417"><![CDATA[
To jest proste. <br /><br />[syntax=c]#pragma GCC push_options<br />#pragma GCC optimize (&quot;O0&quot;)<br /><br />your code<br /><br />#pragma GCC pop_options[/syntax]<br /><br />Można też użyć volatile - podobny efekt, ale dla konkretnej zmiennej lub funkcji. <br /><br />Tu masz komplet informacji o możliwych rodzajami optymalizacji:<br /><br /><!-- m --><a class="postlink" href="https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html" >https://gcc.gnu.org/onlinedocs/gcc/Opti ... tions.html</a><!-- m --><br /><br />Hard core <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5966">sq5rix</a> — 4 mar 2016, o 14:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kenubi]]></name></author>
<updated>2016-03-04T11:40:50+01:00</updated>
<published>2016-03-04T11:40:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155409#p155409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155409#p155409"/>
<title type="html"><![CDATA[Re: avr-gcc (linux) wersje gcc a rozmiar kodu wynikowego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155409#p155409"><![CDATA[
Bo nie zmieniam (sensu w kodzie i wywołaniu kompilatorów -wołam je z pliku bash - nie przez make), a to co się zmienia wymieniłem przecież: gcc, linux. Niejawne - czyli podawane np. przez zmienne środowiskowe i jakieś .cfg - których nie znam (i pytam).<br />Jakie .lss, jakie eclipse .. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> ja to piszę w Midnight Commander (mcedit) - jestem &quot;starej daty&quot; - myszki przy pisaniu kodu doprowadzają mnie do szału.<br />a diff mi nic nie daje, sekcje są poprzemieszczane i trochę inny kod wygenerowany.<br /><br />Ale już chyba wiem, to OPTYMALIZATOR (-Os) mi się wchrzania, mam mnożenie przez dodawanie - prościutka pętelka, wykorzystałem ją jednak tylko raz (x*3) a optymalizator na gcc 4.8.2 &quot;na chama&quot; generuje mi ASM &quot;uniwersalnego&quot; mnożenia &quot;__mulhi3&quot;, które wg. tamtej pętelki jest 2,3x większe.<br />Zresztą na gcc 4.5 też z tą pętlą zrobił jakieś cyrki (ale mniejsze), za to do dzielenia w pętli się nie przyczepił.<br />A ja właśnie napisałem te funkcje by zaoszczędzić te kilka bajtów - a &quot;ON&quot; mi na złość tam robi problemy.<br /><br />Pytanie, jak w C zaznaczyć by optymalizator nie optymalizował tej funkcyjki? Mogę ostatecznie napisać ją w ASM i zlinkować, i tak zrobię jak się nie odczepi od niej <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12667">kenubi</a> — 4 mar 2016, o 11:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kenubi]]></name></author>
<updated>2016-03-04T10:58:04+01:00</updated>
<published>2016-03-04T10:58:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155404#p155404</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155404#p155404"/>
<title type="html"><![CDATA[avr-gcc (linux) wersje gcc a rozmiar kodu wynikowego]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14731&amp;p=155404#p155404"><![CDATA[
Cześć, pytanie na które nie spodziewam się uzyskać konkretnej odpowiedzi, lecz warto spróbować.<br />Kod (dla attiny13) skompilowany na:<br />- kompie z linux mint 13 na gcc 4.5.3 ma 1024 bajty (bin)<br />- ten sam kod skopiowany na kompa z linux mint 17.3 z gcc 4.8.2 ma 1070 bajtów (bin)<br /><br />Oczywiście niczego nie zmieniam (poza kompami).<br />I teraz się zastanawiam, czy na innym kompie mam szukać jakiś ustawień zdefiniowanych gdzieś na dysku (jakieś niejawne opcje kompilatora), czy jest jakaś uznana (za porządną) wersja (która?) avr-gcc - która generuje solidny kod, czy to zwyczajnie efekt rozwijania gcc (a może raczej bibliotek avr-libc?) i dodawania/poprawiania kodu?<br /><br />Różnica jest spora, prawie 50 bajtów. Kod i tak przystrzygłem jak tylko mogłem i musiałem wyrzucić kilka funkcjonalności - no ale, nie o kod tu właściwie chodzi a znaczą różnicę w wyniku (mogę analizować dumpy ASM, ale nawet ten 1K to sporo pracy jest i być może nic nie osiągnę).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12667">kenubi</a> — 4 mar 2016, o 10:58</p><hr />
]]></content>
</entry>
</feed>