2017-02-14 13 views
2

stmfd命令は1つの命令と見なされているので、IRQを処理する前に完全に実行されることになりますか? それは複数の命令と見なされるので、IRQを処理してstmfd命令を完了することになるでしょうか?stmfd命令を実行するときにIRQが発生するとどうなりますか?

+0

[ARM: "STMDB SP !, {R0-R8}"(別名PUSH {R0-R8})はアトミック操作ですか?](http://stackoverflow.com/questions/23628136/arm- is-stmdb-sp-r0-r8-aka-push-r0-r8-atomic-operation) –

+1

はコアに依存し、それぞれ別々に、または特定のものを調べなければなりません。 –

+0

通常、どの命令が中断されたかは気にしないでください。あなたが気遣う唯一の時間は、もし書き込みの一部が起こって停止した後、それらのいくつかが再び(同じアドレスで)起こった(たとえ中断されていなくても遠方の側が決定的な時間枠で物事を得ることを何らかの方法で保証していない)場合と比較して、パーパーラル・アクトを別々に放棄した場合とは異なる。 –

答えて

2

正確な回答は、正確なコアに依存します。たとえば、ARM Cortex-M4では、この動作はアトミックではなく、中断可能です。ここをクリックしてください - http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/ch03s09s01.html

プロセッサは、Interruptible-continuable Instruction フィールドを実装しています。複数ロード(LDM)操作と複数ストア(STM)操作が割り込むことができます。 EPSRのICIフィールドには、割り込みが発生した ポイントからのロードまたはストアの多重化を続けるために必要な情報が格納されています( )。これは、ソフトウェアが、デバイスにアクセスするためにロードマルチプルまたはストアマルチプル命令を使用したり、繰り返しの書き込みに敏感であるかまたは敏感なメモリ領域を使用してはならないことを意味します。 の読み取りまたは書き込みを繰り返すと、結果が一貫しないか、不要な副作用( )が発生する可能性がある場合、ソフトウェアはこれらの命令を使用してはなりません。

あなたが持っているARMコアのマニュアルで同じ章を探してください。

関連する問題