マイクロコンピュータのスタックの役割

概要概要

みなさん、仕事の途中で急いで新しい仕事に就くと、それまでの仕事の内容が一時的に別の場所に移されて新しい仕事が始まりますよね?急いで新しい仕事が終わったら、今中断した元の仕事を再開します。このとき、マイクロコンピュータの場合、「元の作業内容が一時的に転送される場所」を「スタック」と呼びます。

現在のジョブがメインルーチンであり、新しいジョブは「例外処理(割り込みなど)」と「関数処理(サブルーチンなど)」です。メインルーチンの実行中に「例外処理」が発生した場合、メインルーチンは中断されますが、この時点でのレジスタとプログラムカウンタの値は、メモリ領域(通常はRAM)に一時的に保存されます(PUSH / Push ))。このストレージ領域は、「スタック」または「スタック領域」と呼ばれます。その後、メインルーチンに戻ると、「スタック」の内容が元のレジスタ(POP / pop)に戻されます。

メモリ領域の「スタック」を指すレジスタは、「スタックポインタ」と呼ばれます。通常、「スタックポインタ」は、RAM内の「スタック領域」のアドレスを指します(図1を参照)。
図1

スタックの基本操作

マイコンのメインルーチンの実行中に、例外処理(割り込み、エラーなど)や関数の実行によるサブルーチンが発生した場合、マイコンはメインルーチンを中断し、動作レジスタや実行中のプログラムカウンタ(以下、PC)の値などを返します。その保管場所は「スタック」と呼ばれます。スタックは高速でアクセス可能なメモリを使用する必要があるため、通常は内蔵RAMを使用します。そこで、格納場所を示すレジスタを「スタックポインタ(以下、SP)」と呼びます。SPには通常、保管場所の内蔵RAMのアドレス値が含まれています。

メインルーチンに戻るために必要な情報は「コンテキスト」と呼ばれ、一時ストレージ操作は「PUSH(プッシュ/巻き戻し)」と呼ばれます。割り込み処理等後、マイコンはメインルーチンに戻り、スタックの内容を復元します。この操作を「POP(ポップ/リカバリ、リカバリ)」と呼びます。

スタックが高速アクセス可能なストレージデバイスである場合、特にRAMは不要であるため、一部のマイクロコンピュータはレジスタセットをスタックとして使用します。

スタックポインタ(SP)

まず第一に、スタックはスタックを意味します。したがって、マイクロコンピュータがスタックと呼ぶのは、コンテキストを1つずつ蓄積して保存することです。
つまり、コンテキストがスタックに格納されると、SPによって示されたアドレスから順番にスタックされた画像に格納されます。「スタッキング」と言いましたが、実際のマイコンでは、SPを減算してアドレスの少ない方向に格納することがよくあります。

汎用レジスタとは異なり、SPはPCやステータスレジスタ(通常はCCRと呼ばれます)などの特殊レジスタとして分類されます。初期値はユーザーが設定します。構成方法は、ソフトウェアまたはハードウェアを介して実行できます。どちらの設定方法は、製品の仕様によって異なります。

ハードウェアスタックとソフトウェアスタック

例外処理が発生し、コンテキストがスタックされると、通常、ハードウェア(割り込みコントローラー)によって実行されます。これは「ハードウェアスタック」と呼ばれます。一方、サブルーチンが関数を介して実行される場合、ソフトウェアはPUSH命令を使用してコンテキストをスタックに保存し、POP命令を使用して戻るときにPOPを実行します。このようなスタッキングにソフトウェアを使用することを「ソフトウェアスタッキング」と呼びます。

おすすめ

転載: blog.csdn.net/qq_18191333/article/details/107596467