<div dir="ltr"><div><div><div><div><div><br></div>No ja mam takyto kus kodu pre pic16xxx:<br><br>void Delay(unsigned long int Cycles)<br>   while(Cycles--)<br>    ;<br><br></div>asm:<br>                   movlw    1<br>                   movwf    Delay<br>
                   clrf    Delay+1<br>                   clrf    Delay+2<br>                   clrf    Delay+3<br>                   subwf    Delay@Cycles,f<br>                   movf    Delay+1,w<br>                   skipc<br>
                   incfsz    Delay+1,w<br>                   subwf    Delay@Cycles+1,f<br>                   movf    Delay+2,w<br>                   skipc<br>                   incfsz    Delay+2,w<br>                   subwf    Delay@Cycles+2,f<br>
                   movf    Delay+3,w<br>                   skipc<br>                   incfsz    Delay+3,w<br>                   subwf    Delay@Cycles+3,f<br>                   incf    Delay@Cycles&amp; (0+127),w<br>                   skipnz<br>
                   incf    (Delay@Cycles+1)&amp; (0+127),w<br>                   skipnz<br>                   incf    (Delay@Cycles+2)&amp; (0+127),w<br>                   skipnz<br>                   incf    (Delay@Cycles+3)&amp; (0+127),w<br>
                   btfsc    3,2<br>                   return<br>                   goto<br><br></div>V 1.12 je podla mna ten kod este dlhsi. Pre increment je ta rutina podobna.<br><br></div>A.<br><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">Dòa 30. októbra 2013 11:29, Jaromir Sukuba <span dir="ltr">&lt;<a href="mailto:jarin.hw@gmail.com" target="_blank">jarin.hw@gmail.com</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">
Presvedcil som sa: XC1.12<br>
<br>
unsigned long i;<br>
...<br>
i++;<br>
<br>
0xFFEA: MOVLW 0x1<br>
0xFFEC: ADDWF i, F, ACCESS<br>
0xFFEE: MOVLW 0x0<br>
0xFFF0: ADDWFC 0x8, F, ACCESS<br>
0xFFF2: MOVLW 0x0<br>
0xFFF4: ADDWFC 0x9, F, ACCESS<br>
0xFFF6: MOVLW 0x0<br>
0xFFF8: ADDWFC 0xA, F, ACCESS<br>
<br>
Cize celkom pochopitelny kus &quot;assembleru&quot;. Nulovanie W po kazdej<br>
inkrementacii je predpokladam dan za free verziu kompilatora - pouziva<br>
sa vseobecne pripocitanie 32-bitovej konstanty k premennej, bez ohladu<br>
na to, ze jedno z nich je skratka jednotka.<br>
Andy, ako to robis, ze uplne bezne veci u teba skratka nefunguju?<br>
Rozmyslam, ze by som ta zamestnal ako beta-testera.<br>
<br>
<br>
<br>
<br>
Dòa 30. októbra 2013 11:12, Andrej Jancura &lt;<a href="mailto:aj.hwlist@gmail.com">aj.hwlist@gmail.com</a>&gt; napísal/a:<br>
<div class="HOEnZb"><div class="h5">&gt; Ahoj,<br>
&gt;<br>
&gt; nemusis sa hned citit dotknuty vsetkym co napisem. Pozri ja som to pochopil<br>
&gt; tak, ze aj ked uniony nie su podla normy a cez pointre mi nikdy takato<br>
&gt; konverzia nechodila, lebo kompilator vrestal, myslim si, ze mozes pisat kod<br>
&gt; tak, aby si bol podla normy a sucasne vygenerujes optimalny kod v asm. Taky<br>
&gt; ako by si ho napisal v pure asm.<br>
&gt;<br>
&gt; Tie konstrukcie si ale musis najst sam a pozriet ako sa co preklada. A v<br>
&gt; pripade PicC a XC8 je kazda C konstrukcia generovana inym kodom. Mozes sa o<br>
&gt; tom presvedcit napr. ked si das unsigned long int i, a v programe mas i++...<br>
&gt; Neviem sice ako posledna xc1.21, ale nejaka 1.12 to generovala takou<br>
&gt; rutinou, kde som prvy krat v zivote skonstatoval, ze neviem pochopit co ten<br>
&gt; kus asembleru robi. Predchadzajuca verzia kompilatora totiz pouzivala<br>
&gt; klasicky incfsz...<br>
&gt;<br>
&gt; Zial uz som dlho nic s tymto nerobil, pretoze som bol znechuteny tym, ze aj<br>
&gt; ked som vygeneroval z C kod ako keby bol z asembleru v app. note, aj tak mi<br>
&gt; to poriadne nechodilo na hw. Avsak medzicasom som prisiel na par trikov, ale<br>
&gt; to sa zda, ze je cisto hw zalezitost a treba pouzit iny algoritmus obsluhy<br>
&gt; hw.<br>
&gt;<br>
&gt; A.<br>
&gt;<br>
&gt;<br>
&gt; Dòa 30. októbra 2013 9:57, Jan Waclawek &lt;<a href="mailto:konfera@efton.sk">konfera@efton.sk</a>&gt; napísal(-a):<br>
&gt;<br>
&gt;&gt; Lenze type punning nie je podla normy; resp. z normy priamo vyplyva, ze<br>
&gt;&gt; obe<br>
&gt;&gt; metody maju normou nedefinovany vysledok.<br>
&gt;&gt;<br>
&gt;&gt; Ako som bol pisal, ak mas pocit, ze nieco treba mat urcite napisane<br>
&gt;&gt; nejakym<br>
&gt;&gt; sposobom, netreba zbytocne vahat a treba ist do asm. To zase u tych ARMov<br>
&gt;&gt; nie je uplne trivialne, ale u 8-bitov sa to priamo nuka. Uznavam, ze nie<br>
&gt;&gt; kazdy kompilator ma taku uzasnu podporu pre inline asm ako gcc a uznavam,<br>
&gt;&gt; ze u gcc to zase pada na hubu kvoli mizernej dokumentacii...<br>
&gt;&gt;<br>
&gt;&gt; wek<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ----- Original Message ---------------<br>
&gt;&gt; &gt;Ahoj,<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;to si mozes dovolit na tvojej F4... Ale na cipe s 8K-16K instrukcii je<br>
&gt;&gt; &gt;kazdy trik dobry. Ono aj ked to pises podla normy, tak sa to da napisat<br>
&gt;&gt; &gt;rozne, tak aby si mal minimalny vygenerovany kod.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;2013/10/29 Jan Waclawek &lt;<a href="mailto:konfera@efton.sk">konfera@efton.sk</a>&gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Ak &quot;sa to napise&quot; tak, ako norma predpisuje, tak na optimalizaciach<br>
&gt;&gt; &gt;&gt; nezalezi.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; A o to tu ide.<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; wek<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; ----- Original Message ---------------<br>
&gt;&gt; &gt;&gt; &gt;No ja bych rekl, ze vic zalezi na zapnutych optimalizacich, nez jak se<br>
&gt;&gt; &gt;&gt; &gt;to napise...<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
&gt;&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
&gt;&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; HW-list mailing list  -  sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
&gt; <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
&gt; <a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
&gt;<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>