差b / n個の関数の呼び出しと割り込み呼び出し

D

dev

Guest
[color = redの]の[/色] [color = redの]のどの関数の呼び出しは、システムで生成されるときに発生[/色]。と何が割り込みコールが何これらの2つの違いはシステムで生成されたときにどうなりますか?
 
割り込み呼び出しは、外部の刺激や信号は、任意の交流の割り込み入力に来るときに生成されます。および関連する割り込みルチンが実行されます。関数呼び出しは、コードのどの部分でも、プログラマがdeleberatelyを実現しています。あなたがコードの繰り返し部分の関数を記述します。そして、あなたの代わりに繰り返しのコードをrewrittingのコード内で必要なときにそれを呼び出します。これは、メモリ内の一部を保存するほか。繰り返されるコードは、メモリ内に繰り返されることはありませんので、代わりにroutinは、メモリ内のコードの機能の一部に移動します。関数は、プログラムカウンタは、元のコード内の場所に復帰します実行された後
 
関数呼び出しは、通常のプログラムです生成されます。割り込みは通常、ハードウェアによって生成されます。例:Cではプログラムは、あなたが関数を行うことで、関数を呼び出す場合。主な機能とサブ機能があります。サブ関数は、プログラマがプログラムされています。ただし、割り込みは、ハードウェア固有のものです。例:コンピュータでは、CPUがプログラムを処理しているし、それを実行している。あなたのキーボードのキーを押すと、キーボードは、キーボードを、CPUへの割り込みを設定します。今CPUはキーが押されるアクションに基づいて行動することができます。最良の方法は、要約すると? 1。関数は、プログラマによって作成されます。 2。割り込みは、ハードウェアを物理的に設計されており、他のハードウェアによって利用される。ホープは、この府に役立ちます
 
どちらの関数は、最終的に彼らが呼ばれました場所に戻って、割り込みfuntionしかし、と..戻り値の命令は、割り込みの要因をクリアRETI命令され..それ以外の場合は、繰り返し呼び出されます..関数の場合は戻り値は単にRETをされ...
 
一主な違いは、されていることを言うか:関数呼び出しは、予測の方法で発生する...あなたはそれを呼び出すときに、なぜ知っている...割り込みは、いつでも発生する可能性がありますので、割り込みサービスルーチンは、いくつか行われる..それ以外の場合は、レジスタ、メモリの場所やperiphals内の任意の貴重な情報を上書きすることができますハウスキーピング必要があります...
 
こんにちは、関数呼び出しの間ので、あなたのCPUの本体のみのレジスタがスタックにプッシュされる必要があり、コンテキスト変更はありません。彼らは、呼び出しが戻ったとして(poped)が復元されます。割り込み呼び出し中に、完全なコンテキストの変更は、そのすべてのレジスタは、スタックにプッシュされ復元されるとき、または割り込み呼び出しの戻り値をpoped。また、割り込み通話中に、割り込みは、他の割り込みは、現在の割り込みルーチンを邪魔して避けて、マスクされています。特定のRETI命令またはIRET命令の目的は、割り込み呼び出しからの復帰後、再び割り込み可能にすることです。
 
fucntionコールがいくつかのケースでできるコンテキストchnage同様ば聞かせて、それは(Linux OSの呼び出しを参照してください)ソフトウェア割り込みの形で実現を呼び出すのOS {0}にはSayを伴います。だから、一般的に、ハードウェアとソフトウェアに依存するが、関数呼び出しの内容を変更することなく、最も頻繁にいずれかを使用されている。関数は、実際のfucntion呼び出しをinluine宣言されている場合は、実行されますが呼び出さされている関数のコードをその場で検討されます。しかし、再び、これは実装が定義されています。
 

Welcome to EDABoard.com

Sponsor

Back
Top