Renesas Synergy™

FAQ 1008993 : サブルーチン(Subroutine)

マイコンのプログラミング・テクニックのひとつで、あるまとまった処理プログラムをメイン・ルーチンから参照するようにして、切り出したものです。同じ処理が何度も行われる場合に有効です。サブルーチンの利点としては、プログラム・サイズが短縮できることと、その処理プログラムの変更が1ヶ所で済むことが上げられます。
なお、サブルーチン・コールの命令には、プログラムを参照するCALL命令のほかに、テーブル参照のCALLT命令などがあります。
実際にサブルーチンを参照するには、CALL命令で分岐して、処理の最後にRET命令でメイン・ルーチンに戻ります。このとき、CALL命令でプログラム・カウンタPCの内容をスタックに退避させ、RET命令でそれをスタックからPCに復帰させます。なお、V850シリーズでは、ハード的なスタック領域の概念がなく、内部のレジスタが退避領域として割り当てられています(JARL(Jump and register link)命令で退避して、JMP(Jump register)命令で復帰)。




こうした一連の動作は割り込みに似ていますが、次のような違いがあり、サブルーチンはメイン・ルーチンの流れの一部(PSWを共有)であるのに対して、割り込みではメイン・ルーチンと独立したまったく無関係な別の処理が行われます。通常、サブルーチンでは、メイン・ルーチンから何らかの情報(引き数)を受けて処理を行い、その結果(戻り値)をレジスタやフラグ、メモリに戻します。

他にご質問がございましたら、リクエストを送信してください