<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <div class="moz-cite-prefix">A dokonce i pri vicenasobnem pouziti.
      Neresil bych problemy, ktere ma v popisu prace optimalizace
      kompilatoru. A cim vic textu, tim casto lip a prehledneji...</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Dne 21.04.2020 v 20:10 Miro su
      napsal(a):<br>
    </div>
    <blockquote type="cite"
cite="mid:CABPWwZGw7+RGfW7Fz02pa3R=CvAX=0_AHXwHpEoAK2GC4RXWHA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="auto">Niektore kompilatory urobia inline aj pri
        funkciach kde je obsluha vacsia ako samotna funkcia.
        <div dir="auto"><br>
        </div>
        <div dir="auto">Miro</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, 21 Apr 2020, 15:37
          Tomáš Hamouz, <<a href="mailto:tomas.hamouz@divesoft.com"
            moz-do-not-send="true">tomas.hamouz@divesoft.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div>
            <span style="font-family:'Courier New';font-size:10pt">A
              navíc slušný kompilátor inlinuje zcela automaticky funkci,
              která je static a použitá jen jednou.<br>
              <br>
              Tomáš<br>
              <br>
              <br>
            </span>
            <table>
              <tbody>
                <tr>
                  <td width="2" bgcolor="#0000ff"><br>
                  </td>
                  <td width="522"><span style="font-family:'courier
                      new';font-size:10pt">k tomu prave slouzi treba ten
                      inline<br>
                      <br>
                      t<br>
                      <br>
                      21. 4. 2020 v 14:42, Vláďa Anděl <<a
                        href="mailto:vaelektronik@vaelektronik.cz"
                        target="_blank" rel="noreferrer"
                        moz-do-not-send="true">vaelektronik@vaelektronik.cz</a>>:<br>
                      <br>
                       </span></td>
                </tr>
              </tbody>
            </table>
            <span style="font-family:'courier new';font-size:10pt">No já
              nemohu říkat, že znám céčko :-) protože nepíšu pro PC, ale
              jen pro malé jednočipy obvykle s malou pamětí pro data,
              zatím co code obvykle zdaleka celé nevyužiju. Takže sice
              vím, že každou blbost bych měl psát zvlášť jako funkci a
              pak ji volat, ale vadí mi že u krátkých funkcí (pár řádků)
              se běh programu prodlouží o volání + návrat z funkce a o
              uschovávání + obnovení obsahu registrů. K tomu ještě se
              (zbytečně) zaplňuje stack a tak v mém programu najdete
              třeba něco takového<br>
              <br>
              ADC0CN0=0x80;                // ADC0 zapnuty<br>
              ADINT=0; <br>
              ADBUSY=1;                        // 1. mereni             <br>
              while(!ADINT);             <br>
              Potenc=ADC0; <br>
              ADC0CN0=0;                    // ADC0 vypnuty<br>
              <br>
              PCON=1;                            // t=1,11 ms  cekani v
              IDL<br>
              <br>
              ADC0CN0=0x80;                // ADC0 zapnuty<br>
              ADINT=0; <br>
              ADBUSY=1;                        // 2. mereni         <br>
              while(!ADINT);             <br>
              Potenc+=ADC0; <br>
              ADC0CN0=0;                    // ADC0 vypnuty<br>
              <br>
              PCON=1;                            // t=2,22 ms<br>
              <br>
              ADC0CN0=0x80;                // ADC0 zapnuty<br>
              ADINT=0; <br>
              ADBUSY=1;                        // 3. mereni<br>
              while(!ADINT);             <br>
              Potenc+=ADC0; <br>
              ADC0CN0=0;                    // ADC0 vypnuty<br>
              <br>
              Zrovna tenhle prográmek mi běží s oscilátorem 80 KHz a
              časově je to tam dost na těsno - samosřejmě kritická je
              spotřeba procesoru.<br>
              <br>
              Anděl<br>
              <br>
              <br>
              Dne 21.04.2020 v 13:29 Tomáš Hamouz napsal(a):<br>
              Názvy #define jsem použil nějaké, které mě napadly, ale
              jak jsem psal, nevím co původní výraz ve skutečnosti <br>
              vyhodnocuje, podle toho bych použil lepší názvy. Chtěl
              jsem tím naznačit že do vlastního kódu nepatří žádná
              konstanta, <br>
              která ovlivňuje použitý algoritmus, s několika drobnýma
              výjimkama.<br>
              <br>
              Stejně tak název té funkce nemá vyjadřovat všechny v něm
              použité podmínky, ale k čemu je toto porovnání dobré.<br>
              <br>
              A opět jak jsem psal, možná by bylo lepší porovnání s tou
              trojkou strčit rovnou do té funkce, ale bez znalosti
              kontextu jen hádám.<br>
              <br>
              Je to zcela bez ohledu na firemní kuluru, jak stárnu tak
              používám zcela samovolně čím dál tím delší identifikátory.<br>
              Může to být i tím že se u mne rozmáhá skleróza a už si
              prostě řadu detailů nepamatuju.<br>
              <br>
              Tomáš<br>
              <br>
              <br>
            </span>
            <table>
              <tbody>
                <tr>
                  <td width="2" bgcolor="#0000ff"><br>
                  </td>
                  <td width="1155"><span
                      style="font-family:'calibri';font-size:11pt">No
                      jo, ale to pak na místě použití není vidět, jaké
                      že ty podmínky jsou. Předpokládám, že funkce bude
                      dle firemních pravidel definována v nějakém
                      externím souboru. Nedej bože, když takových sad
                      podmínek bude víc. To pak budou názvy těch funkcí
                      tak dlouhé, že určitě poruší nějaké délkové
                      pravidlo, ohledně délky řádku:-)<br>
                       <br>
                      Normálně bych pro zvýšení přehlednosti dal mezery
                      okolo + (což jsem ale pro zabránění zalomení v
                      mailu vynechal). Uvažoval bych ještě o další
                      závorce okolo součtu.<br>
                       <br>
                      Použití funkce pro mě přehlednost jasně snižuje:-)
                      Navíc <span style="font-family:'courier
                        new';font-size:10pt">MIN_A_COUNT a<span
                          style="font-family:'calibri';font-size:11pt"> <span
                            style="font-family:'courier
                            new';font-size:10pt">REMAING_COUNT<span
                              style="font-family:'calibri';font-size:11pt"> jsou
                              vyloženě matoucí názvy pro podmínky
                              nesouvisející s count:-) Jinak teda proti
                              použití define nic nenamítám, běžně
                              používám, ale zas je to zbytečná
                              komplikace do ukázky typu kódu v mailu.<br>
                               <br>
                              K čemu teda máme různé jazyky, když bychom
                              nemohli využívat jejich výhod?<br>
                               <br>
                              PH<br>
                               <br>
                               <br>
                              <b>Od: </b></span></span></span></span></span><a
                      style="font-family:'calibri';font-size:11pt"
                      href="mailto:tomas.hamouz@divesoft.com"
                      target="_blank" rel="noreferrer"
                      moz-do-not-send="true">Tomáš Hamouz</a><br>
                    <span style="font-family:'courier
                      new';font-size:10pt">Myslím že lepší otázka zní,
                      jak to napsat tak aby bylo na první pohled jasné
                      co daný výraz vyhodnocuje, <br>
                      bez ohledu na počet písmenek.<br>
                      <br>
                      Abych planě nekritizoval, nejspíš bych to udělal
                      takhle, ale protože nevím účel celé konstrukce,<br>
                      tak by bylo třeba lepší zahrnout i porovnání s
                      trijkou. Podmínku malého počtu písmenek zcela
                      zjevně <br>
                      nesplňuju, ale to zcela záměrně, protže bych se v
                      tom rád vyznal i po několika letech kdy jsem to
                      neviděl.<br>
                      <br>
                      <br>
                      #define   MIN_A_COUNT               2          
                       // vyznam teto konstanty<br>
                      #define   REMAING_COUNT       12        // vyznam
                      teto konstanty<br>
                      #define   MINIMAL_COND_COUNT   3        // vyznam
                      teto konstanty<br>
                       <br>
                      static inline int count_test_conditions(int a, int
                      b, int x, int y) <br>
                      {<br>
                          int count = 0;<br>
                          if (a < MIN_A_COUNT) {++count;}        //
                      oduvodneni teto podminky<br>
                          if (a > b) {++count;}                  //
                      oduvodneni teto podminky<br>
                          if (x < y) {++count;}                  //
                      oduvodneni teto podminky<br>
                          if ((a%x) == REMAING_COUNT) {++count;} //
                      oduvodneni teto podminky<br>
                          if (b < y) {++count;}                  //
                      oduvodneni teto podminky<br>
                          return count;<br>
                      }<br>
                      <br>
                      if (count_test_conditions(a, b, x, y) > 3) {<br>
                      }<br>
                      <br>
                      <br>
                      A bylo by docela zajímavé se podívat jak se liší
                      zkompilovaný kód v obou případech.<br>
                      Myslím že by tam velké rozdíly nebyly.<br>
                      <br>
                      <br>
                    </span>
                    <table>
                      <tbody>
                        <tr>
                          <td width="2" bgcolor="#0000ff"><br>
                          </td>
                          <td width="1025"><span
                              style="font-family:'calibri';font-size:11pt">Otázka
                              tedy zní, jak ho upravit, aby prošel a
                              přibylo co nejméně písmenek:-)<br>
                               <br>
                              PH<br>
                               <br>
                              <b>Od: </b></span><a
                              style="font-family:'calibri';font-size:11pt"
                              href="mailto:as5sgm@gmail.com"
                              target="_blank" rel="noreferrer"
                              moz-do-not-send="true">as5sgm@gmail.com</a><br>
                            <span style="font-family:'courier
                              new';font-size:10pt">>>> If
                              ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y)
                              > 3) {<br>
                              Tento riadok kodu by nepresiel review a
                              ani MISRA rules, vsade kde su aspon dvaja
                              vyvojari :)<br>
                              Miro<br>
                               <br>
                              <span
                                style="font-family:'calibri';font-size:11pt">On
                                21. 4. 2020 10:37, Pavel Hudecek wrote:<br>
                                Vzhledem ke komutativnosti sčítání by
                                pořadí mělo bejt irelevantní, kromě toho
                                posledního >, ale to má nižší
                                prioritu než +, takže se musí vyhodnotit
                                jako poslední.<br>
                                 <br>
                                No a že to nebude fungovat v jiných
                                jazycích? To je snad normální. Nebo
                                všechny mají ++, printf, pointery jako
                                Delphi, nepotřebují deklarovat proměnné
                                jako VB6, … ?<br>
                                 <br>
                                Příkazů je tam 0, takže omezení na max.
                                jeden na řádek to taky nepřekračuje.<br>
                                 <br>
                                PH<br>
                                 <br>
                                <b>Od: </b></span></span><a
                              style="font-family:'calibri';font-size:11pt"
                              href="mailto:a2x1nptda8@email.cz"
                              target="_blank" rel="noreferrer"
                              moz-do-not-send="true">Michal Gregor</a><br>
                            <span
                              style="font-family:'calibri';font-size:11pt">Spravne
                              se maji slozite podminky prevest do
                              funkci. Plati zasada jeden <br>
                              radek jeden prikaz. A nespolehat se na
                              interni "tajne" funkce <br>
                              compilatoru. Co kdyz to nekdo skopiruje do
                              C++? Nebo do uplne jineho jazyja.<br>
                               <br>
                               <br>
                              Dne 21.04.2020 v 8:46 Jan Waclawek
                              napsal(a):<br>
                              > A nemohlo to byt skor o tom, ze v
                              takychto vyrazoch<br>
                              > <br>
                              >>> If
                              ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y)
                              > 3) {<br>
                              > <br>
                              > nie je zarucene poradie vyhodnotenia
                              pod-vyrazov, aj keby mali vedlajsie<br>
                              > efekty?<br>
                              > <br>
                              > wek<br>
                              > <br>
                              > <br>
                              > ----- Original Message
                              ---------------<br>
                              >> Sa vam dvom do toho zamontujem,
                              som nieco nasiel vo svojom archive, ale<br>
                              >> Ty si mimo podozreni :)<br>
                              >> Skor si ja pofajcim, ze uz kedy
                              som daval do placu citat z normy, ktory<br>
                              >> si teraz dal aj Ty :-D<br>
                              >> <br>
                              >> </span><a
                              style="font-family:'calibri';font-size:11pt"
href="https://list.hw.cz/pipermail/hw-list/2011-July/399004.html"
                              target="_blank" rel="noreferrer"
                              moz-do-not-send="true">https://list.hw.cz/pipermail/hw-list/2011-July/399004.html</a><br>
                            <span
                              style="font-family:'calibri';font-size:11pt">>> <br>
                              >> miro<br>
                              >> <br>
                              >> On 21.4.2020 1:17, Jan Waclawek
                              wrote:<br>
                              >>> Hm, tak ja vidim vyhody skor
                              v tych 6 ifoch a 1 pomocnej premennej...<br>
                              >>> <br>
                              >>> Ale ak by si nahodou nasiel
                              odkaz, kde ten JW z minulosti povedal, ze<br>
                              >>> vysledkom podmienky nemusi
                              byt 0 alebo 1, tak by som Ti bol vdacny.<br>
                              >>> <br>
                              >>> wek<br>
                              >>> <br>
                              >>> <br>
                              >>> ----- Original Message
                              ---------------<br>
                              >>> Tak?e se po pár misících mu?u
                              vrátit k tomu, ?e jedna z výhod C je
                              mo?nost<br>
                              >>> dilat vici, jako:<br>
                              >>> <br>
                              >>> If
                              ((a<2)+(a>b)+(x<y)+(a%x==12)+(b<y)>
                               3) {<br>
                              >>> <br>
                              >>> Co? v jiných jazycích vede na
                              6 ifu a 1 pomocnou prominnou.<br>
                              >>> <br>
                              >>> PH<br>
                              >>> <br>
                              >>> Od: Jan Waclawek<br>
                              >>> <br>
                              >>> Hm, tak potom by som mal asi
                              tomu JW z minulosti jednu tresnut...<br>
                              >>> <br>
                              >>> Konkretne teda, C99, 6.5.8
                              Relational operators #6:<br>
                              >>> Each of the operators<
                               (less than),>  (greater than),<=
                              (less than or<br>
                              >>> equal to), and>=<br>
                              >>> (greater than or equal to)
                              shall yield 1 if the specified relation is
                              true<br>
                              >>> and 0 if it is false. 92)<br>
                              >>> The result has type int.<br>
                              >>> <br>
                              >>> Ten footnote 92) je kuzelny:<br>
                              >>>    The expression a<b<c
                              is not interpreted as in ordinary
                              mathematics. As the<br>
                              >>> syntax indicates, it<br>
                              >>> means (a<b)<c; in other
                              words, ??if a is less than b, compare 1 to
                              c;<br>
                              >>> otherwise, compare 0 to c??.<br>
                              >>> <br>
                              >>> wek<br>
                              >>> <br>
                              >>> <br>
                              >>> ----- Original Message
                              ---------------<br>
                              >>> <br>
                              >>> Mil jsem nijak za to, ?e to
                              byl právi jistý JW, kdo mi tu onehdá
                              vyeetl, ?e<br>
                              >>> spoléhat se, ?e výsledkem
                              podmínky je 0 nebo 1 není správné:-)<br>
                              >>> <br>
                              >>> PH<br>
                              >>> <br>
                              >>> Od: Jan Waclawek<br>
                              >>> <br>
                              >>>> A jinak teda ten kód
                              udilá to, ?e pokud je splnina podmínka v
                              závorce, nastaví se bit 0 na výstupní (zda
                              to bude bit 0 není zarueeno, ale jinak
                              skoro jisté).<br>
                              >>> <br>
                              >>> Preco by to nemal byt bit 0?<br>
                              >>> <br>
                              >>>
                              _______________________________________________<br>
                              >>> <br>
                              >>>>> <br>
                              >>>>>     DDRB
                              |=(1<CLK_UP); <br>
                              <span style="font-family:'courier
                                new';font-size:10pt"> </span></span></td>
                        </tr>
                      </tbody>
                    </table>
                    <span style="font-family:'calibri';font-size:11pt"> <br>
                       </span></td>
                </tr>
              </tbody>
            </table>
            <br>
            <br>
            <span style="font-family:'courier new';font-size:10pt">_______________________________________________
              HW-list mailing list  -  sponsored by </span><a
              style="font-family:'courier new';font-size:10pt"
              href="http://www.HW.cz" target="_blank" rel="noreferrer"
              moz-do-not-send="true">www.HW.cz</a><span
              style="font-family:'courier new';font-size:10pt">
            </span><a style="font-family:'courier new';font-size:10pt"
              href="mailto:Hw-list@list.hw.cz" target="_blank"
              rel="noreferrer" moz-do-not-send="true">Hw-list@list.hw.cz</a><span
              style="font-family:'courier new';font-size:10pt">
            </span><a style="font-family:'courier new';font-size:10pt"
              href="http://list.hw.cz/mailman/listinfo/hw-list"
              target="_blank" rel="noreferrer" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a><span
              style="font-family:'courier new';font-size:10pt">
              <br>
              <br>
              _______________________________________________<br>
              HW-list mailing list  -  sponsored by <a
                href="http://www.HW.cz" target="_blank" rel="noreferrer"
                moz-do-not-send="true">www.HW.cz</a><br>
              <a href="mailto:Hw-list@list.hw.cz" target="_blank"
                rel="noreferrer" moz-do-not-send="true">Hw-list@list.hw.cz</a><br>
              <a href="http://list.hw.cz/mailman/listinfo/hw-list"
                target="_blank" rel="noreferrer" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a></span></div>
          _______________________________________________<br>
          HW-list mailing list  -  sponsored by <a
            href="http://www.HW.cz" rel="noreferrer noreferrer"
            target="_blank" moz-do-not-send="true">www.HW.cz</a><br>
          <a href="mailto:Hw-list@list.hw.cz" target="_blank"
            rel="noreferrer" moz-do-not-send="true">Hw-list@list.hw.cz</a><br>
          <a href="http://list.hw.cz/mailman/listinfo/hw-list"
            rel="noreferrer noreferrer" target="_blank"
            moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>