- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スタックの仕組み)
スタックの仕組みとは?
このQ&Aのポイント
- スタックは、データを一時的に保存するためのメモリ構造です。
- スタックは、LIFO(Last In, First Out)の原則に従って動作します。
- プログラムがCALL命令を実行すると、現在のコマンドのアドレスがスタックにプッシュされます。RET命令が実行されると、スタックからアドレスがポップされて、プログラムが実行を再開します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
スタックはFILO(First In, Last Out=最初に入れたものが最後に取り出される)データ構造です。 実行される順番でスタックの中を追いかけてみましょう。 以下はアドレス、スタックの先頭→最後の順に並んでいます。 8000 5 8002 3 5 8004 8006 3 5 ※CALLは戻り先(=CALLの次の行)のアドレスをスタックに格納してから指定番地にジャンプします 800B 3 5 ←戻り先の8006がGR7に取り出される 800C 5 ←3がGR1に取り出される 800D ←5がGR2に取り出される 800E 800F 8 8011 8006 8 8013 8 ←RETを実行するとスタックの先頭の戻り先アドレスを取り出してジャンプ 8006 ←8がGR6に取り出される ポイントはCALLもスタックを使うと言うところですね。
お礼
なるほど。スタックは自分ではわかっていたのですが、 コールの使い方をよくわかっていませんでした。 わざわざトレースしていただいてありがとうございました^^