2

サム命令セットとKeilrealviewコンパイラでARMcortexを使用すると、32ビット整数に安全にアクセスできますか?サムレジスタセットは16ビットなので、32ビット整数をフェッチするには2つのマシン命令が必要ですか?その場合、32ビットへのアクセスはアトミックではありません。私の心配が本当なら、それはint割り当てがクリティカルリージョンによって保護されるべきであることを意味しますか?

4

2 に答える 2

1

Thumb は ARM と同じ 32 ビット レジスタを使用するため、問題はありません。半分になるのは命令サイズです (Thumb-2 では厳密にはそうではありません)。

Thumb にコンパイルする場合、コードを変更する必要はありません。

于 2011-06-17T16:23:50.540 に答える
0

命令サイズは、レジスタ サイズではなく、サム モードで 16 ビットです。

これは、定数代入i=1;がアトミックと見なされることを意味します。複数の命令が生成されますが、 が でiあってものメモリ位置を変更するのは 1 つだけiですint32_t

しかし、のようなことをしたら、クリティカル セクションが必要ですi=i+1。もちろん、それはアトミックではありません。

于 2011-06-17T17:12:40.740 に答える