連載
» 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

大手メーカー求人・人気ランキング

研究開発<自動運転の研究>

機構設計<車載用・蓄電用リチウムイオン電池モジュール>

制御システム開発<エンジン/モータ・燃料電池/車両/車載電装システム>

クボタ New!

機械設計<農機/建機/エンジン>

京セラ New!

電気回路設計<車載用カメラモジュール>

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.