0

私はスタックメモリの基本を理解していると思いますが、スタックを管理する方法のメカニズムを担当しているのはまだ完全には理解していません-それはコンパイラですか、CPUアーキテクチャですか? プログラミング言語に依存していますか?

たとえば、ARM では関数呼び出しでのスタックの使用を減らす傾向があることを読んだので、関数への引数は通常 4 つのレジスタを介して渡されます。ただし、これは他のCPUでも汎用レジスタを使用して実装できるようです。アーキテクチャはこの要求をどのように課すことができるでしょうか?

他の場所で、FORTRAN 77 ではスタックを使用しないことを読みました。

そして、スタックが上向き/下向きに成長するという問題があります。誰がそれを担当していますか?

全体的に、それはCPUに依存しており、どのように課されているのか知りたいですか? そうでなければ、誰がこれらの決定に責任がありますか?

ありがとう。

4

1 に答える 1

0

プロセッサによって課すことはできません。呼び出し規約はコンパイラによって決定され、ほとんどのコンパイラはこれを行うためだけに言語標準を破ることはありません。

pushプロセスが/のようなものを使用している限り、スタックの成長方向はプロセッサによって決定されますpop。直接アクセスする場合はesp、従う必要がありますが、そうではありません。

于 2012-12-31T15:26:10.033 に答える