<?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=3026&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-05T00:06:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3026&amp;mode</id>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-05-05T00:06:27+01:00</updated>
<published>2013-05-05T00:06:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36141#p36141</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36141#p36141"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36141#p36141"><![CDATA[
<div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />A jeszcze korzystając z okazji zapytam się: czy tutaj ten dodatkowy nawias jest potrzebny?<br />lcd_write_cmd( (0x80 + x + y) );<br /></div><br />Niepotrzebny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 5 maja 2013, o 00:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-04T23:58:13+01:00</updated>
<published>2013-05-04T23:58:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36137#p36137</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36137#p36137"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36137#p36137"><![CDATA[
<div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />No to nic tylko pogratulować twórcom kompilatora.<br /></div><br /><br />Z tym się zgodzę w 100% to dobry kawał zespołowej roboty <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 maja 2013, o 23:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-05-04T23:56:02+01:00</updated>
<published>2013-05-04T23:56:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36136#p36136</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36136#p36136"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36136#p36136"><![CDATA[
No to nic tylko pogratulować twórcom kompilatora.<br />A jeszcze korzystając z okazji zapytam się: czy tutaj ten dodatkowy nawias jest potrzebny?<br /><strong>lcd_write_cmd( (0x80 + x + y) );</strong><br />nie że wytykam tylko po prostu chciałbym wiedzieć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 4 maja 2013, o 23:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-04T23:51:42+01:00</updated>
<published>2013-05-04T23:51:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36134#p36134</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36134#p36134"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36134#p36134"><![CDATA[
a teraz żeby nie było, że tak sobie tylko gadamy, .... - to proszę bardzo - kompilator w łapki panowie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i zróbcie sobie prosty krótki test i skompilujcie sobie taki zapis tej funkcji<br /><br />[syntax=c]void lcd_defchar(uint8_t nr, uint8_t *def_znak) {<br />register uint8_t i;<br />lcd_write_cmd( 64+((nr&amp;0x07)*8) );<br />for(i=0;i&lt;8;i++) lcd_write_data(*(def_znak++));<br />}[/syntax]<br /><br />a także taki zapis jak w książce:<br /><br />[syntax=c]void lcd_defchar(uint8_t nr, uint8_t *def_znak) {<br />register uint8_t i,c;<br />lcd_write_cmd( 64+((nr&amp;0x07)*8) );<br />for(i=0;i&lt;8;i++)<br />{<br />c = *(def_znak++);<br />lcd_write_data(c);<br />}<br />}[/syntax]<br /><br />no i teraz spójrzcie na listing w asemblerze sobie jednej i drugiej funkcji po kompilacji!<br /><br />[syntax=asm]00000264 &lt;lcd_defchar&gt;:<br /> 264:1f 93       pushr17<br /> 266:cf 93       pushr28<br /> 268:df 93       pushr29<br /> 26a:eb 01       movwr28, r22<br /> 26c:90 e0       ldir25, 0x00; 0<br /> 26e:87 70       andir24, 0x07; 7<br /> 270:90 70       andir25, 0x00; 0<br /> 272:08 96       adiwr24, 0x08; 8<br /> 274:88 0f       addr24, r24<br /> 276:88 0f       addr24, r24<br /> 278:88 0f       addr24, r24<br /> 27a:0e 94 b0 00 call0x160; 0x160 &lt;lcd_write_cmd&gt;<br /> 27e:18 e0       ldir17, 0x08; 8<br /> 280:89 91       ldr24, Y+<br /> 282:0e 94 b4 00 call0x168; 0x168 &lt;lcd_write_data&gt;<br /> 286:11 50       subir17, 0x01; 1<br /> 288:d9 f7       brne.-10     ; 0x280 &lt;lcd_defchar+0x1c&gt;<br /> 28a:df 91       popr29<br /> 28c:cf 91       popr28<br /> 28e:1f 91       popr17<br /> 290:08 95       ret[/syntax]<br /><br />i kod z książki:<br /><br />[syntax=asm]00000264 &lt;lcd_defchar&gt;:<br /> 264:1f 93       pushr17<br /> 266:cf 93       pushr28<br /> 268:df 93       pushr29<br /> 26a:eb 01       movwr28, r22<br /> 26c:90 e0       ldir25, 0x00; 0<br /> 26e:87 70       andir24, 0x07; 7<br /> 270:90 70       andir25, 0x00; 0<br /> 272:08 96       adiwr24, 0x08; 8<br /> 274:88 0f       addr24, r24<br /> 276:88 0f       addr24, r24<br /> 278:88 0f       addr24, r24<br /> 27a:0e 94 b0 00 call0x160; 0x160 &lt;lcd_write_cmd&gt;<br /> 27e:18 e0       ldir17, 0x08; 8<br /> 280:89 91       ldr24, Y+<br /> 282:0e 94 b4 00 call0x168; 0x168 &lt;lcd_write_data&gt;<br /> 286:11 50       subir17, 0x01; 1<br /> 288:d9 f7       brne.-10     ; 0x280 &lt;lcd_defchar+0x1c&gt;<br /> 28a:df 91       popr29<br /> 28c:cf 91       popr28<br /> 28e:1f 91       popr17<br /> 290:08 95       ret[/syntax]<br /><br />i co widzimy ? tzn widzicie jakąś różnicę ?<br /><br />-------------------------------------------<br /><br />a zatem na końcu ktoś może powiedzieć - no DOBRA - skompilowało się tak samo albo prawie tak samo ale wg mnie czytelniejsze jest wtedy GDY .......<br /><br />no i tu zaczynają się po prostu szaleństwa - gdy znajdzie się jakiś JEDYNY GURU na świecie, który to WYTYCZA JASNY ŚWIETLISTY SZLAK i nakazuje wszystkim aby pisali kody programów DOKŁADNIE TAK JAK ON mówi a nie inaczej ... to jest bzdura .... bo ten sam kod już nawet niezależnie jak się skompiluje do asemblera można w C napisać na 1000 różnych sposobów. I w 99% sytuacji gdy nie gonią nas nie wiadomo jakie zależności czasowe - to każdy programista napisze tak jest jemu wygodniej ..... a nie tak jak PISZE jedyny GURU jakiś tam. I to także staram się przekazać ...<br /><br />owszem własna optymalizacja kodu to ważna rzecz - ale wystarczy czytać dalej to co piszę w tej książce a także w kolejnych i zobaczyć jak powoli następuje ewolucja w proponowanych rozwiązaniach - bo nie od razu uda się WSZYSTKO przekazać w JEDNYM ZDANIU .... i to jest chyba sztuka - umieć to COŚ przekazać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 maja 2013, o 23:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-05-04T23:49:13+01:00</updated>
<published>2013-05-04T23:49:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36133#p36133</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36133#p36133"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36133#p36133"><![CDATA[
Racja, ale znowu to może zadziałać w drugą stronę.<br /><br />Ja np. spojrzałem na ten powyżej zacytowany fragment i pomyślałem &quot;ja bym to napisał inaczej, krócej,   tzn że czegoś nie rozumiem/ źle myślę&quot;<br /><br />PS: Akurat w programowaniu w C to daleko mi jeszcze do &quot;woła&quot;  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 4 maja 2013, o 23:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-04T23:27:24+01:00</updated>
<published>2013-05-04T23:27:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36132#p36132</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36132#p36132"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36132#p36132"><![CDATA[
zresztą dla tych którzy dotychczas nie mieli w ogóle do czynienia z programowaniem taki zapis:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">for(i=0;i&lt;8;i++) lcd_write_data(*(def_znak++));</div><br /><br />kolejna rzecz to przykład jest np ze strony nr 220 niebieskiej książki gdzie zmienna c jak również i jest zdefiniowana ze specyfikatorem register:<br /><br />register uint8_t i,c;<br /><br />i dlatego została użyta właśnie zamiast tak skróconego opisu .... po to chociażby żeby wspomnieć w ogóle o tym specyfikatorze w praktycznych przykładach ...<br /><br />ta książka panie kolego to nie wyścigi na zasadzie kto bardziej zoptymalizuje kod ja ? czy ty? .... zapomnij o tym to jest książka, która ma uczyć od podstaw i to jest jej niewątpliwą zaletą. <br /><br />Masz inny sposób na przekazanie wiedzy na temat języka C ? .... napisz książkę .... a potem dyskutuj co jest potrzebne a co niepotrzebne.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br /><div class="quotetitle">Ledes napisał(a):</div><div class="quotecontent"><br />Wg niektórych kod bardziej czytelny to krótkie linijki z minimalną liczbą operacji, wyrażeń. Coś w tym jest.<br /></div><br /><br />tak tak - tylko jest takie fajne przysłowie - proszę żeby nikt tego nie brał do siebie:<br /><br />&quot;zapomniał wół jak cielęciem był&quot;<br /><br />czyli jak już liznąłem &quot;trochę&quot; wiedzy i potrafię napisać kod w jednej linijce to co ? to po co innym tłumaczyć taką prościznę no nie ? .... Ja za przeproszeniem mam gdzieś takie podejście - i opisuję to po swojemu panowie ... Efekty tego są takie, że książka zbiera jednak dobre opinie - bo wielu ludzi pisze, że w końcu udało im się zaskoczyć ....<br /><br />Z czym jest o wiele gorzej gdy ktoś wpada, nawet z dużą wiedzą, powiedziałbym ogromną .... ale za chiny nie potrafi tego przekazać - poza tym że napisze parę &quot;szlaczków, ptaszków, krzaczków w C&quot; żeby to pokazać co to nie on <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ....<br /><br />Pozwólcie , że ja utrzymam w tej książce taki poziom dydaktyki jak ja to widzę - i na pewno nie zamierzam tego zmieniać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 maja 2013, o 23:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-05-04T23:20:46+01:00</updated>
<published>2013-05-04T23:20:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36131#p36131</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36131#p36131"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36131#p36131"><![CDATA[
Wg niektórych kod bardziej czytelny to krótkie linijki z minimalną liczbą operacji, wyrażeń. Coś w tym jest.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 4 maja 2013, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-05-04T23:20:17+01:00</updated>
<published>2013-05-04T23:20:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36130#p36130</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36130#p36130"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36130#p36130"><![CDATA[
<div class="quotetitle">Wojtek001 napisał(a):</div><div class="quotecontent"><br />Ale to strasznie dziwne że dla prostoty analizowania wprowadzono dodatkowo zmienną &quot;c&quot; która przecież nic więcej nie robi. Tak poza tym dużo jest też takich fragmentów kodu w których nie potrzebnie ładowane są nawiasy (np przy mnożeniu).<br /></div><br /><br />To co dla ciebie jest oczywiste dla wielu innych może nie być oczywiste .... i stąd takie podejście. Jeśli ty wiesz jak można to sobie optymalizować - to jesteś do przodu co nieco  ....<br /><br />A z nawiasami to żadna przesada - czasem dla lepszej czytelności warto ich używać, żeby później np nie dochodziło do takich błędów:<br /><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/post35732.html#p35732" >post35732.html#p35732</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 maja 2013, o 23:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-05-04T22:51:05+01:00</updated>
<published>2013-05-04T22:51:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36128#p36128</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36128#p36128"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36128#p36128"><![CDATA[
Ale to strasznie dziwne że dla prostoty analizowania wprowadzono dodatkowo zmienną &quot;c&quot; która przecież nic więcej nie robi. Tak poza tym dużo jest też takich fragmentów kodu w których nie potrzebnie ładowane są nawiasy (np przy mnożeniu).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 4 maja 2013, o 22:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-05-04T22:26:23+01:00</updated>
<published>2013-05-04T22:26:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36125#p36125</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36125#p36125"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36125#p36125"><![CDATA[
Jasne, że tak można. Pewnie tak było dla prostoty analizowania.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 4 maja 2013, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-05-04T22:20:02+01:00</updated>
<published>2013-05-04T22:20:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36123#p36123</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36123#p36123"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36123#p36123"><![CDATA[
aha, jeszcze jedna wątpliwość <br /><br />Tutaj mamy pętle for będącą częścią funkcji odpowiedzialnej za definiowanie własnych znaków do LCD:<br /><strong><br />for(i=0;i&lt;8;i++)<br />{<br />c = *(def_znak++);<br />lcd_write_data(c);<br />}</strong><br /><br />Dlaczego wnętzre powyższej pętli jest rozpisane dwustopniowo? Nie można było by tak?<br /><strong><br />for(i=0;i&lt;8;i++)<br />{<br />lcd_write_data(*(def_znak++))<br />}</strong><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 4 maja 2013, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ledes]]></name></author>
<updated>2013-05-04T21:18:42+01:00</updated>
<published>2013-05-04T21:18:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36118#p36118</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36118#p36118"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36118#p36118"><![CDATA[
str jest inkrementowany, ale jednocześnie rzutowany na wskaźnik do typu uint8_t. Chodzi tu o zgodność typów.<br />Bo str może być wskaźnikiem innego typu, a funkcja eeprom_read_byte wymaga wskaźnika do uint8_t.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=355">Ledes</a> — 4 maja 2013, o 21:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2013-05-04T21:03:19+01:00</updated>
<published>2013-05-04T21:03:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36115#p36115</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36115#p36115"/>
<title type="html"><![CDATA[Re: Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36115#p36115"><![CDATA[
Poczytaj o wskaźnikach i rzutowaniach str 106, 153 niebieska książka. A na pewno będziesz wiedział o co chodzi <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=288">Janadamis</a> — 4 maja 2013, o 21:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Wojtek001]]></name></author>
<updated>2013-05-04T20:57:14+01:00</updated>
<published>2013-05-04T20:57:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36114#p36114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36114#p36114"/>
<title type="html"><![CDATA[Dziwna linika kodu w C]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3026&amp;p=36114#p36114"><![CDATA[
Przebijam się przez kolejne strony bluebooka i natknąłem się na linkę której całkowicie nie rozumiem:<br /><strong>znak=eeprom_read_byte((uint8_t * )(str++));</strong><br />co oznacza tutaj <strong>(uint8_t * )</strong>? Po mojemu w cale tego tu nie powinno być. Pewnie było to gdzieś wcześniej w książce wyjaśniane ale niestety nie jestem tego w stanie teraz odnaleźć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=500">Wojtek001</a> — 4 maja 2013, o 20:57</p><hr />
]]></content>
</entry>
</feed>