<html>
  <head>
    <meta content="text/html; charset=iso-8859-2"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Zajimavy spek, ze LDM bude
      implementovana jen pro oblast pameti je asi mozne, nakonec je to
      predpokladane pouziti, chyba je asi na strane kompilatoru nebo
      absence nejake option ktera mu rekne, pro co to ma kompilovat.<br>
      Zas se mi nezda, ze by Keil mel nejake takove chyby.<br>
      Neda se zakazat optimalizace pro konkretni funkci, ze bytato
      provedla pozadovane LDR/STR v asm a prekladac ji nechal, jak je?<br>
      <br>
      Dne 8. 7. 2015 v 14:46 Hynek Sladky napsal(a):<br>
    </div>
    <blockquote cite="mid:559D1BBE.1070807@centrum.cz" type="cite">
      <meta content="text/html; charset=iso-8859-2"
        http-equiv="Content-Type">
      <font face="Helvetica, Arial, sans-serif">Rozdelovani na vic radku
        a dokonce ani vkladani ruznych meziinstrukci nepomaha...<br>
        <br>
        Protoze se nemuzu spolehnout na to, ze to priste nezoptimalizuje
        jinak, zkusil jsem pouzit inline assembler.<br>
        <br>
                  __asm {LDR data,[addr,#0]}<br>
                  test_send (data, 4); // LDR r0,[r5,#0] works well...<br>
                  addr += 4;<br>
        <br>
        <br>
                  data = test_receive (4, 0);<br>
                  __asm volatile {STR data,[addr,#0]}<br>
                  addr += 4;<br>
        <br>
        Prvni pripad je IMHO jasny - volani funkce zafunguje jako
        dostatecna bariera pro optimalizaci, takze LDR se pouzije (na to
        jsem prisel uz na zacatku).<br>
        <br>
        V druhem pripade kompilator tvrdosijne ukazuje vlastni
        inteligenci: i pres explicitni zapsani instrukce je ve vyslednem
        kodu opet STM.<br>
        <br>
        Po rade ruznych (vice ci mene zmatenych pokusu:-) nakonec
        zafungovalo:<br>
                  __asm volatile {<br>
                    STR data,[addr,#0]<br>
                    ADDS addr,addr,#4<br>
                  }<br>
        I kdyz je mozne, ze po pripadnem upgradu na novou verzi
        prekladace to zas prestane fungovat...<br>
        <br>
        Hynek<br>
        <br>
        <br>
      </font>
      <div class="moz-cite-prefix">Dne 8.7.2015 14:31, Tomáš Hamouz
        napsal(a):<br>
      </div>
      <blockquote cite="mid:1223881964.20150708143155@divesoft.cz"
        type="cite">
        <pre wrap="">Zkuste mu vnutit rozdělení těch operací.
Na starších ARMech funguje

   *ptr = data;
   asm volatile ("");      // ano, opravdu prazdny kus assembleru
   ptr++;

   pripadne tam ten nop vnutit

   *ptr = data;
   asm volatile ("nop\r\n");
   ptr++;


Na Cortexech jsou na to nějaké pseudoindstrukce.
Prostudujte také toto <a moz-do-not-send="true" class="moz-txt-link-freetext" href="http://www.efton.sk/sk/volatile.htm">http://www.efton.sk/sk/volatile.htm</a>

Tomáš
</pre>
      </blockquote>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <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>
    <br>
  
<br /><br />
<hr style='border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;' />
<table style='border-collapse:collapse;border:none;'>
        <tr>
                <td style='border:none;padding:0px 15px 0px 8px'>
                        <a href="https://www.avast.com/antivirus">
                                <img border=0 src="http://static.avast.com/emails/avast-mail-stamp.png" alt="Avast logo" />
                        </a>
                </td>
                <td>
                        <p style='color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica"; font-size:12pt;'>
                                This email has been checked for viruses by Avast antivirus software.
                                <br><a href="https://www.avast.com/antivirus">www.avast.com</a>
                        </p>
                </td>
        </tr>
</table>
<br />
</body>
</html>