講義では、アセンブラでどのようにパラメータを渡すことができるかを話しました。メモリ、レジスタ、スタックという3つの異なるメカニズムを区別しました。 これらの特徴の1つは、メモリとレジスタはサブプログラムでの再帰をサポートしていませんが、スタックでは再帰をサポートしていません。スタックとは何故、メモリとレジスタは再帰を許可しないのですか?
なぜですか?
私は、彼らが後に(再帰)のために必要とされるかもしれないにもかかわらず、これレジスタのエントリが常に上書きされ、無視され、呼び出し元/呼び出し先が登録、保存、レジスタの場合に推測
しかし、どのようなメモリは?
もちろん、レジスタはスタック(XTensa ISAのように)、またはスタック内のレジスタの一部(例えばSPARC、Itanium)に編成することもできますが、他のレジスタは使用されないかもしれません再帰的な部分。バージョン管理されたメモリ(通常、ハードウェアトランザクションメモリに関連付けられていますが、本来このようなインターフェイスにはバインドされていません)では、同じメモリアドレスに複数の格納場所が存在する可能性があります。 –
@ PaulA.Clayton:ああ良い点。 x86のx87 FPレジスタスタックは、再帰関数によっても非常に限定された再帰深度で使用できます。 –