アセンブラーのフレームポインター
-
16-10-2019 - |
質問
私は現在、Wombat 4でアセンブリプログラミングを学んでいます。フレームポインターを見ています。フレームポインターとは何かを正確に理解しています。これはレジスタであり、スタック上のパラメーターにアクセスするために使用されます。しかし、私はそれらがプログラムカウンターにどのように影響するか、そしてそれらが通常のレジスタよりも好まれる理由について混乱しています。
誰かが説明できますか?
解決
機能の実行中にスタックポインターが変更されると、スタックへのアクセスが静的フレームポインターではあまり混乱しておらず、関数へのエントリに設定されているため、相対的なアドレス指定がより簡単になります。
スタックを使用してパラメーターを保存する理由は、通常、レジスタよりも多くのメモリが利用可能であることです。関数g(a、b、c、d、e、f)で何をしますか? fをスタックに置きます。スタックのサイズは、スタックを使用して使用可能なメモリによってのみ制限されるため、さらに多くのパラメーターを備えた機能に対して機能します。
最新のコンパイラには、通常、パラメーターの合格にレジスターの使用が許可されているかどうかを制御するフラグがあります。
所属していません cs.stackexchange