Cortex M0 (ARM) CPU 用のコードを書いていますが、32 ビットの読み取り/書き込みはアトミックです。8bit/16bit 変数をいつ読み書きするのか疑問に思っていましたが、それらもアトミックであることが保証されていますか? 私の本能的にはそうです。これらは内部で 32 ビット セクションにアラインされているため、CPU がそれらを読み書きするために 2 つの別々の命令を必要とする可能性はありません。
しかし、メモリを節約するために多くの変数をパックされた構造体に保存することもあり、変数が 32 ビット境界に整列されていない可能性があるため、16 ビット値の各半分が異なるセクションにある可能性があります。
では、パック構造を使用するとアトミック操作が失われるというのは本当ですか?