<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>