[ZX]
-
- То есть забыли добавить volatile в объявление "uint8_t fifo[];"?
Расплата вполне заслуженная. - SciFi(17.05.2020 14:05)
- Если добавлять volatile для всей памяти -- это будет треш, угар и содомия (при просмотре дизассемблера -- крайне неоптимальный код). Так делать не нужно. Потом возникает другая проблема -- вся область памяти становится несовместимой (без постоянных reinterpret_cast'ов) с обычными указателями и всеми интерфейсами в программе. Вообще volatile не нужен. Достаточно вставлять memory barrier. В случае кольцевого буфера: после записи данных и перед измененим указателя записи, и fk0(392 знак., 17.05.2020 14:20, ссылка)
- То есть забыли добавить volatile в объявление "uint8_t fifo[];"?
Расплата вполне заслуженная. - SciFi(17.05.2020 14:05)