<div dir="ltr"><div><div>Dobry den,<br><br></div>starsie verzie prekladaju i++ tak, ze tam je skutocne incfsz a cela konstrukcia ma 8 instrukcii a to na 35 rocnej architekture PIC16. Cize tak ako ste to odhadol, ten princip. Preco novsie verzie pouzivaju tu sialenu konstrukciu neviem, ale da sa vytusit, ze za tym mozu byt rozne dovody. Ono je aj tak celkom zaujimave filozofovanie, preco ten kompilator negeneruje najoptimalnejsi kod, a to aj v platenej verzii. Rozoberat to zbytocne nechcem, lebo problem pristupu k typu int cez byty sa tu rozoberal uz aspon tri krat a vzdy sme skoncili pri kompilatore C... A poznamkami preco je PIC16 na nic. Tym nechcem povedat, ze novsie cipy nie su dobre, ale mozu byt aj ine prakticke dovody, preco robit so zabehnutymi typmi.<br>
<br>Tymto by som rad tuto diskusiu z mojej strany uzavrel.<br><br></div>A.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">Dňa 31. októbra 2013 0:19, Radek Benedikt <span dir="ltr">&lt;<a href="mailto:benedikt@lphard.cz" target="_blank">benedikt@lphard.cz</a>&gt;</span> napísal(-a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">&gt; unsigned long i;<br>
&gt; ...<br>
&gt; i++;<br>
&gt;<br>
&gt; 0xFFEA: MOVLW 0x1<br>
&gt; 0xFFEC: ADDWF i, F, ACCESS<br>
&gt; 0xFFEE: MOVLW 0x0<br>
&gt; 0xFFF0: ADDWFC 0x8, F, ACCESS<br>
&gt; 0xFFF2: MOVLW 0x0<br>
&gt; 0xFFF4: ADDWFC 0x9, F, ACCESS<br>
&gt; 0xFFF6: MOVLW 0x0<br>
&gt; 0xFFF8: ADDWFC 0xA, F, ACCESS<br>
&gt;<br>
&gt; Cize celkom pochopitelny kus &quot;assembleru&quot;. Nulovanie W po kazdej<br>
&gt; inkrementacii je predpokladam dan za free verziu kompilatora - pouziva<br>
&gt; sa vseobecne pripocitanie 32-bitovej konstanty k premennej, bez ohladu<br>
&gt; na to, ze jedno z nich je skratka jednotka.<br>
<br>
</div>Drobne upresneni naokraj:<br>
Ta jednotka je taky 32bitova, ono to neni zas tak nebezne, pricitat 0 +<br>
carry k casti promenne. Pravda, sice je obcas videt preskoc nasledujici<br>
instrukci(e), kdyz neni prenos a tou nasledujici instrukci je inkrement<br>
casti promenne. Opravuji se, dost (vetsina ?) procesoru nenastavuje pri<br>
inkrementu prenos a protoze se pricita jednicka k vicebitove promenne,<br>
tak je mozne testovat byte na nulu. Takze preskoc nasledujici<br>
instrukci(e) neni-li nula. A to celkem trikrat, takze to nebude kratsi<br>
nez priklad nahore. A tusim ze to nebude na PICu ani rychlejsi. To by<br>
musel mit podmineny skok, ne jen preskok.<br>
<br>
Radek (<a href="http://benedikt2hw.cz" target="_blank">benedikt2hw.cz</a>)<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</div></div></blockquote></div><br></div>