Привет! Почитал разные материалы про атомарные операции, никак не могу прийти к выводу в чем опасность чтения? При модификации все понятно - произошло прерывание или переключение задач в ОСРВ, которое вклинилось между инструкциями, данные испортятся. А вот при чтении? Возьмем функцию на Cortex-M3: long long a; void store(void) { a=0xDDCCFFEE12345678; } Ассемблерный код после компиляции такой: 0x00001314 493A LDR r1,[pc,#232] ; @0x00001400 0x00001316 483B LDR r0,[pc,#236] ; @0x00001404 0x00001318 4A3B LDR r2,[pc,#236] ; @0x00001408 0x0000131A E9C21000 STRD r1,r0,[r2,#0] Если я располагаю этот код в одной задаче ОСРВ, а читаю допустим в другой, то ведь никаких проблем не будет т.к. переменная a меняется по последней инструкции? В чем подвох?
|