-
Data: 2023-02-15 23:10:46
Temat: Re: C++ ośla łączka
Od: heby <h...@p...onet.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 15/02/2023 22:14, Marek wrote:
>> nie oznaczą go volatile. A to generuje sideeffect, na przykąłd jak
>> czytamy bufor typu UART.
> Czyli konkretnie jaki side effect z tym UARTem?
Na przykład, w wielu uartach odczytanie bajtu z bufora wejściowego
możliwe jest dokładnie *raz* na każdy odebrany bajt, hardware traktuje
taki odczyt jako procedurę odebrania wiadomości i nastepny odczyt może
odczytać coś z dalszej pozycji bufora. W ogólnym wypadku, operacja na
rejestrze *może* spowodować zmianę stanu hardware. Rejestr to nie jest
pamięć.
Taka ciekawostka: MC68000 i MC68020 rózniły się tym, że pierwszy w
niektórych instrukcjach asm zapisywał *dwukrotnie* to samo do pamieci, a
drugi racz zapisywał a drugi raz odczytywał i w obu wypadkach jedna z
tych operacji była bez sensu algorytmicznego. To cecha magiczna
magistrali 6[8|5]00/68000, każdy cykl jest dostępem do pamięci i
procesor *coś* musi zrobić w każdym cyklu, nawet jak nie miało to sensu,
bo nie miał co wymienić z pamięcią.
Był to spory problem, kiedy okazało się, że jeśli ktoś akurat zapisuje
do rejestru hardwareowego, który ma sideefect np. uruchamiania DMA,
program działał inaczej w zależności od CPU, mimo że efekt końcowy był
identyczny z punktu widzenia ASM.
Ten problem z MC680x0 to sprzętowy odpowiednik "problemów" z C, gdzie
też pewne operacje mogą pojawić się i zniknąc w wyniku optymalizacji, co
nie przeszkadza w modelu pamięciowym, ale może powodować katastrofy w
modelu rejestrów sprzętowych. Dlatego jest słowo volatile. I swoją drogą
tylko dlatego ;)
Następne wpisy z tego wątku
- 16.02.23 00:02 Grzegorz Niemirowski
- 16.02.23 07:22 heby
- 16.02.23 12:46 Grzegorz Niemirowski
- 16.02.23 13:20 Piotr Gałka
- 16.02.23 13:45 heby
- 16.02.23 13:54 heby
- 16.02.23 14:35 J.F
- 16.02.23 15:23 Grzegorz Niemirowski
- 16.02.23 15:33 Piotr Gałka
- 16.02.23 15:37 J.F
- 16.02.23 16:05 Piotr Gałka
- 16.02.23 17:56 heby
- 16.02.23 18:01 heby
- 16.02.23 19:11 Grzegorz Niemirowski
- 16.02.23 19:22 Marek
Najnowsze wątki z tej grupy
- Cewka elektrozaworu
- zapytanie o chip r5f21275nfp
- nie naprawiam więcej telewizorów
- Zrobił TV OLED z TV LCD
- Zasilacz USB na ścianę.
- Gniazdo + wtyk
- Aliexpress zaczął oszukiwać na bezczelnego.
- OpenPnP
- taka skrzynka do kablowki
- e-paper
- 60 mA dużo czy spoko?
- Dziwne zachowanie magistrali adresowej w 8085
- Współczesne mierniki zniekształceń nieliniowych THD audio, produkują jakieś?
- Jaki silikon lub może klej?
- Smar do video
Najnowsze wątki
- 2025-03-11 Warszawa => Kierownik ds. kluczowych Klientów <=
- 2025-03-11 Łódź => System Administrator (Linux, Active Directory) <=
- 2025-03-10 roaming
- 2025-03-10 wodor
- 2025-03-10 Ostrów Wielkopolski => NodeJS Developer <=
- 2025-03-10 Białystok => System Architect (background deweloperski w Java) <=
- 2025-03-10 Częstochowa => Backend Developer (Node + Java) <=
- 2025-03-10 Poznań => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produkc
- 2025-03-10 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-03-10 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Chiny-Kraków => Senior PHP Symfony Developer <=
- 2025-03-10 Szczecin => Key Account Manager IT <=
- 2025-03-10 Warszawa => Node.js / Fullstack Developer <=
- 2025-03-10 Warszawa => Data Engineer (Tech Leader) <=
- 2025-03-10 Gliwice => Business Development Manager - Network and Network Security