<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=12479&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-07-31T07:32:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=12479&amp;mode</id>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-07-31T07:32:02+01:00</updated>
<published>2015-07-31T07:32:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135917#p135917</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135917#p135917"/>
<title type="html"><![CDATA[Re: Tablice a volatile]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135917#p135917"><![CDATA[
Rozumiem, wątpliwości rozwiane. Dziękuję ślicznie za wyjaśnienie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez Gość — 31 lip 2015, o 07:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-07-30T23:59:07+01:00</updated>
<published>2015-07-30T23:59:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135914#p135914</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135914#p135914"/>
<title type="html"><![CDATA[Re: Tablice a volatile]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135914#p135914"><![CDATA[
<div class="quotetitle">wwojtek napisał(a):</div><div class="quotecontent"><br />Na moje oko kompilator darował sobie odczyty z pamięci i zrobił właśnie to, o czym Mirek pisał, że kompilator niby nie powinien<br /></div><br />Tak masz rację ... myliłem się w tym zakresie, może być problem - dokładnie jak to opisał wyżej kolega mokrowski, więc przepraszam za wprowadzenie w błąd.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 lip 2015, o 23:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Anonymous]]></name></author>
<updated>2015-07-30T15:46:34+01:00</updated>
<published>2015-07-30T15:46:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135876#p135876</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135876#p135876"/>
<title type="html"><![CDATA[Tablice a volatile]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12479&amp;p=135876#p135876"><![CDATA[
Witam bardzo. W <a href="http://forum.atnel.pl/topic1755.html"  class="postlink">tym wątku</a> zaintrygowała mnie wypowiedź Mirka:<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />pozbądź się specyfikatora volatile dla tablic, bo dla tablic nie trzeba. [...]  chodzi o to, że dostęp do tablicy musi być i tak zawsze realizowany w asemblerze w oparciu o pary rejestrów indeksowych i nie da się tego zoptymalizować jak dostępu do pojedynczej zmiennej, którą można wrzucić w pojedynczy rejestr i już<br /></div>Coś się zmieniło w tej materii? Bo mam taki kod np.:<br />[syntax=c]uint8_t tablica&#91;3&#93; = {1,2,3};<br /><br />int main(void) {<br />   volatile uint8_t zmienna;<br />   zmienna = tablica&#91;1&#93;;<br />   zmienna = tablica&#91;1&#93;;<br />   zmienna = tablica&#91;1&#93;;<br />}[/syntax]<br />i w listingu dostaję (kompilacja dla megi16, Os):<br />[syntax=asm]volatile uint8_t zmienna;<br />   zmienna = tablica&#91;1&#93;;<br />ldsr24, 0x0061<br />stdY+1, r24; 0x01<br />   zmienna = tablica&#91;1&#93;;<br />stdY+1, r24; 0x01<br />   zmienna = tablica&#91;1&#93;;<br />stdY+1, r24; 0x01[/syntax]Na moje oko kompilator darował sobie odczyty z pamięci i zrobił właśnie to, o czym Mirek pisał, że kompilator niby nie powinien. <br />Po dodaniu wolatila do tablicy kod jest bez zastrzeżeń:<br />[syntax=asm]volatile uint8_t zmienna;<br />   zmienna = tablica&#91;1&#93;;<br />ldir30, 0x61; 97<br />ldir31, 0x00; 0<br />ldr24, Z<br />stdY+1, r24; 0x01<br />   zmienna = tablica&#91;1&#93;;<br />ldr24, Z<br />stdY+1, r24; 0x01<br />   zmienna = tablica&#91;1&#93;;<br />ldr24, Z<br />stdY+1, r24; 0x01[/syntax]Więc jak to w końcu jest z tymi ulotnymi tablicami?<p>Statystyki: Napisane przez Gość — 30 lip 2015, o 15:46</p><hr />
]]></content>
</entry>
</feed>