メディア

スタックの役割Q&Aで学ぶマイコン講座(30)(1/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「スタックの役割」です。

» 2016年09月27日 11時30分 公開

過去の質問一覧はこちら

 素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。

 今回は、初級者から多く寄せられる質問です。

 マイコンの説明書やカタログに「スタック」とか「スタックポインター」とか書かれていますが、そもそも「スタック」とは何ですか? マイコンの動作の中で、どのような役割を果たしているのですか。また、「スタックポインター」とは何を指すのでしょうか? 「スタック」との関係性も教えてください。

 皆さんは、仕事をしている途中で急ぎの新しい仕事が入ったときに、それまでやっていた仕事の内容を一時的に別のところへ移して、新しい仕事を始めますよね。そして急ぎの新しい仕事が終わったら、先ほど中断した元の仕事を再開するでしょう。この時に「元の仕事の内容を一時的に移す場所」を、マイコンの場合は「スタック」と呼びます。

 現在の仕事がメインルーティンで、新しい仕事は「例外処理(割り込みなど)」や「関数処理(サブルーティンなど)」になります。メインルーティンを実行中に「例外処理」などが発生すると、メインルーティンを中断しますが、その時のレジスターやプログラムカウンターの値などをメモリ領域(通常はRAM)に一時退避(PUSH/プッシュ)させます。このメモリ領域を「スタック」や「スタック領域」と呼びます。そして、メインルーティンに戻る際に、「スタック」の内容を元のレジスターに戻します(POP/ポップ)。

 「スタック」がメモリ領域のどこにあるかを示すレジスターを「スタックポインター」と呼びます。通常、「スタックポインター」はRAM内の「スタック領域」のアドレスを示します(図1参照)。

図1:割り込み時のスタック動作
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.