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