連載
» 2016年09月27日 11時30分 UPDATE

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

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

[菅井賢(STマイクロエレクトロニクス),EDN Japan]

過去の質問一覧はこちら

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

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

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

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

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

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

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

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

MONOist×JOBS

【年収1000万以上】人気求人ランキング

半導体開発<自動車用半導体パワーデバイス>

機構設計<新蓄電デバイスモジュール>

機械設計(変圧器)

燃料電池自動車(FCEV、FCV)開発戦略マネージャー

システムエンジニア/TPM<VED>

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.