• ベストアンサー

PIC CALLとGOTOについて

PIC CALLとGOTOについて 普通CALLはRETURNで帰ってきますが、RETURNの前にある条件のときGOTOで CALLから抜け出して他の場所にジャンプするのはプログラム的に よくないことでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.1

PICのCALL処理の詳しい事はわかりませんが、通常のCPUですとCALLした時点で実行中のアドレスをスタックというメモリエリアに格納してからサブルーチンのアドレスにジャンプします。 処理が完了して元の呼出先に戻るときにスタックから元のアドレスを取り出してそのアドレスに戻ります。 上記の様な仕組みなので、CALL先から強制的にGOTOで戻す(他の処理にジャンプする)等の操作を行うとスタックにアドレスを積み残したままになってしまうので、何度も同じ様な処理を繰り返すと「スタックオーバーフロー」というエラーが発生して実行が継続出来なくなります。 ※GOTOで飛んだ後に、また戻ってきてRETURNで抜ける分にはスタックの帳尻が合うので問題ありませんが。 通常のプログラミングでは厳禁の処理なので、PICで可能とかになっていても利用する習慣をつけてしまわない為に避けるべきだと思います。

ny36
質問者

お礼

なかなか回答をよせてくださるかたがおられず、落胆しておりましたが 丁寧な回答をいただき、ありがとうございます。

関連するQ&A