親指命令セットとKeil実数コンパイラを使用してARMコアを使用すると、32ビット整数に安全にアクセスできますか?サムレジスタセットは16ビットなので、32ビットintをフェッチするには2つのマシン命令が必要です。その場合、32ビットにアクセスすることはアトミックではありません。私の心配が真実なら、int代入はクリティカルな地域によって保護されるべきですか?ARM Thumb命令セットを使用する場合、32ビット整数にアクセス(ロード/ストア)するのはアトミックですか?
2
A
答えて
1
ThumbはARMと同じ32ビットレジスタを使用しているため、問題はありません。半分になっているのは、の指示のサイズです(Thumb-2の場合でも厳密にはそうではありません)。
Thumbにコンパイルする場合は、コードを変更する必要はありません。
0
命令サイズは、サムサイズでは16ビットであり、レジスタサイズではありません。
これは、i=1;
のような定数割り当てがアトミックであるとみなされることを意味します。複数の命令が生成されますが、i
がint32_t
であっても、i
のメモリ位置が1つだけ変更されます。
しかし、あなたは一度i=i+1
のようなものにクリティカルセクションが必要です。それはもちろん原子ではありません。
関連する問題
- 1. ARM 32ビットSTR命令
- 2. ARM/Thumb(IOS)でのBLX命令のデコード
- 3. Apple ASとARM/Thumb ADDS命令
- 4. SMLAWy命令の下位32ビットを格納する方法は?
- 5. mipsには32ビットのアドレスと32ビットの命令がありますか?
- 6. MIPS命令を32ビット16進数に変換する方法
- 7. GCCでthumb-2命令を使用する方法
- 8. どのように32ビットIRホールドロード命令ですか?(RISCスタイルの32ビットアーキテクチャ)
- 9. Gem5でのARMプロセッサの命令アクセス
- 10. 2つの32ビット整数を64ビット整数に結合するのはなぜですか?
- 11. gccがサム32ビット命令を生成するようにするには?
- 12. Direction/Sign x86命令セットのビット拡張
- 13. C/Objective CでSSE命令セットを使用するには?
- 14. 64ビット整数のすべてのビットと32ビット整数を比較する
- 15. OpenCL:GPU上の32ビットおよび64ビットpopcnt命令?
- 16. ARMのプリフェッチ命令
- 17. 32ビットレジスタ/命令をリアルモードで使用できますか?
- 18. 32ビット整数をXORingする
- 19. インラインPTX asm()命令を使用する場合、 'volatile'とは何ですか?
- 20. ARMアーキテクチャのGT命令とHI命令の違いは何ですか?
- 21. アトミック命令によるマップアクセスの安全性を保証するには、2つの異なるアトミックで命令の並べ替えが可能ですか?
- 22. は32ビット整数1つの方法の第31ビット(MSB)を読み出すために32ビット整数
- 23. ARM、ヘルプLDR命令
- 24. リバース32ビット整数
- 25. 次のARM命令セットはストールを生成しますか? ARM11MP VFPUプログラミング
- 26. ARMでORRr命令とは何か
- 27. 64ビットCPUで一般的な操作に32ビット整数を使用する理由はありますか?
- 28. 符号付き32ビット整数を符号なし32ビット整数に変換する方法は?
- 29. PDOで64ビットから32ビットに変換される整数
- 30. ARM Thumb/Thumb-2パフォーマンス
同様に、thumbとthumb2の両方の場合、ldm/stm命令を保持します。命令ごとに最大8つのレジスタがサムであり、サムのARMとして完全補数になります。基本的にARMの動作に満足していたら、thumb/thumb2について心配しないでください。実行命令ではなく命令デコーダのことです。 –
しかし、LDM/STM命令は、最大8個のレジスタのセット全体に対してアトミックではありません。アトミシティは、32ビットワードごとに保証されています。 – unixsmurf