• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スタックの仕組み)

スタックの仕組みとは?

このQ&Aのポイント
  • スタックは、データを一時的に保存するためのメモリ構造です。
  • スタックは、LIFO(Last In, First Out)の原則に従って動作します。
  • プログラムがCALL命令を実行すると、現在のコマンドのアドレスがスタックにプッシュされます。RET命令が実行されると、スタックからアドレスがポップされて、プログラムが実行を再開します。

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

  • ベストアンサー
  • g_liar
  • ベストアンサー率52% (382/728)
回答No.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もスタックを使うと言うところですね。

rinnshan
質問者

お礼

なるほど。スタックは自分ではわかっていたのですが、 コールの使い方をよくわかっていませんでした。 わざわざトレースしていただいてありがとうございました^^

関連するQ&A