<html>
  <head>
    <meta content="text/html; charset=ISO-8859-2"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <font face="Helvetica, Arial, sans-serif">Par myslenek, ktere me
      jeste k tematu napadly:<br>
      <br>
      Obcas je dobre se divat, jak ty ktere kompilatory funguji
      (pripadne nefunguji) a podle toho psat pro ne kod. Bohuzel pak
      muze byt projekt obtizne prenositelny na jiny procesor...<br>
      <br>
      Napr. pokud je funkce pouzita pouze v jednom modulu, je vhodne ji
      oznacit atributem static. Vetsinou to pomuze zlepsit vysledek
      optimalizace. Jinak prekladac ceka, ze muze byt funkce volana i
      odjinud, tak se pak k ni chova jinak... Optimalizace jsou IMHO
      provadene vzdy na jednom modulu. Linker uz s tim nic nedela.<br>
      <br>
      U prekladace Hi-Tech jsem narazil na problem funkce, ktera je
      volana jak z preruseni, tak z hlavniho programu: prekladac neumi
      vyrobit (nebo aspon neumel, kdyz jsem to pred par lety resil)
      reentrantni funkci bezpecnou pro oboje pouziti (duvodem je
      neexistence datoveho stacku a tudiz alokace lokalnich promennych
      na pevne adresy). Po mnohych konzultacich s podporou byl jediny
      vysledek: napsat si dve identicke funkce s ruznymi nazvy a jednu
      volat z preruseni, druhou z hlavniho programu.<br>
      <br>
      <br>
      Hynek Sladky<br>
      <br>
      <br>
    </font>
    <div class="moz-cite-prefix">Dne 3.4.2014 9:31, Tomáš Hamouz
      napsal(a):<br>
    </div>
    <blockquote cite="mid:825959323.20140403093129@divesoft.cz"
      type="cite">
      <pre wrap="">Jestli po tom kompilátoru nechcete moc.

Pokud by se měl chovat tak jak píšete, tak by musel kompilovat
dvakrát, poprvé když narazí na danou funkci a podruhé, když už ví
jaké další funkce volá. Protože ve vašem případě v okamžiku kompilace
o volané funkci nic neví, počítá s nejhorší variantou.

Linker jen doplní adresy externích objektů, ale do vlastního kódu
funkce už nezasahuje.

Tomáš


</pre>
      <blockquote type="cite">
        <pre wrap="">To je logická domněnka, Já myslel, že si to nejdřív všechno připraví a pak
to slinkuje dohromady. V té přípravě jsem předpokládal, že si právě osahá
všechny funkce. Pravdou je, pokud se podívám na "profi" programy od
Microchipu, tak veškeré podprogramy jsou na začátku a samotná hlavní
procedura, která volá podprogramy je vždy na konci. Takže asi tohle bude
důvod. Díky!!!  
</pre>
      </blockquote>
      <br>
    </blockquote>
    <br>
  </body>
</html>