-
Data: 2019-02-13 23:06:03
Temat: Re: Zagwozdka w C Keil - wyjaśnienie.
Od: q...@t...no1 (Queequeg) szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]J.F. <j...@p...onet.pl> wrote:
>> Wbrew intuicji -- nie :) Modyfikator `volatile` oznacza tylko tyle, że
>> kompilator nie może robić założeń co do zawartości zmiennej opatrzonej tym
>> modyfikatorem, bo zmienna może zmienić wartość poza ścieżką wykonania (np.
>> jest to sprzętowy rejestr, lub inny wątek ją modyfikuje, lub właśnie
>> przerwanie). `volatile` nie oznacza, że kompilator gwarantuje atomiczny
>> dostęp do zmiennej (czyli że wyłączy wszystko inne, co może zmienić jej
>> wartość w trakcie dostępu -- czy to wątki, czy przerwania, czy zewnętrzny
>> sprzęt).
>
> No ale czy nie powinien ? Bo skoro sie moze zmienic w sposob
> niekontrolowany, to jak mozna wierzyc wartosci odczytanej
> nieatomicznie ?
Są do tego inne mechanizmy. Kompilator nawet nie ma takiej możliwości, bo
volatile nie oznacza nic innego niż "nie optymalizuj dostępu do tej
zmiennej". Kompilator może, ale nie musi wiedzieć, co zmienia tę zmienną.
Zobacz, jak w AVR są zrealizowane rejestry 16-bitowe (np. datasheet do
atmega8 strona 77, "Accessing 16-bit Registers").
>> AVR ma to rozwiązane w ten sposób:
>> https://www.nongnu.org/avr-libc/user-manual/group__u
til__atomic.html
>
> No i widac ja sie te pomysly nadaja do prostego:
> while (ctr) ;
No niestety :)
--
Eksperymentalnie: http://facebook.com/groups/pl.misc.elektronika
Następne wpisy z tego wątku
- 13.02.19 23:07 Grzegorz Niemirowski
- 14.02.19 00:59 HF5BS
- 14.02.19 07:35 Mateusz Viste
- 14.02.19 10:30 Janusz
- 14.02.19 10:44 Grzegorz Niemirowski
- 14.02.19 10:57 Queequeg
- 14.02.19 11:35 J.F.
- 14.02.19 11:42 J.F.
- 14.02.19 11:49 Grzegorz Niemirowski
- 14.02.19 11:59 Queequeg
- 14.02.19 12:14 Queequeg
- 14.02.19 13:07 J.F.
- 14.02.19 13:11 J.F.
- 14.02.19 13:15 J.F.
- 14.02.19 13:25 Queequeg
Najnowsze wątki z tej grupy
- termostat do lodowki
- SEP 1 kV E
- Aku LiPo źródło dostaw - ktoś poleci ?
- starość nie radość
- Ataki hakerskie
- Akumulatorki Ni-MH AA i AAA Green Cell
- Dławik CM
- JDG i utylizacja sprzetu
- Identyfikacja układ SO8 w sterowniku migających światełek choinkowych
- DS1813-10 się psuje
- Taki tam szkolny problem...
- LIR2032 a ML2032
- SmartWatch Multimetr bezprzewodowy
- olej psuje?
- Internet w lesie - Starlink
Najnowsze wątki
- 2024-12-12 Autocom CAN CDP+ wysokie kody błędów
- 2024-12-13 termostat do lodowki
- 2024-12-13 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-13 Warszawa => Head of International Freight Forwarding Department <=
- 2024-12-13 Poznań => Employer Branding Specialist <=
- 2024-12-13 Kraków => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2024-12-13 Kraków => Business Development Manager - Network and Network Security
- 2024-12-13 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2024-12-13 Gdańsk => Programista Full Stack .Net <=
- 2024-12-13 Warszawa => Analityk Biznesowo-Systemowy <=
- 2024-12-13 Białystok => Architekt rozwiązań (doświadczenie w obszarze Java, A
- 2024-12-13 Wrocław => Application Security Engineer <=
- 2024-12-13 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-12-13 Lublin => Programista Delphi <=
- 2024-12-13 Chrzanów => Specjalista ds. public relations <=