2

私はここでたくさんの質問を読みました。それはスタックとヒープが何であるかを説明しています。例えばこれは次のとおりです。スタックとヒープはどこにありますか?、とても役に立ちました。

高水準言語は、Javaのバイトコードや.NETプログラムのMSILなどの中間言語にコンパイルされることを理解しています。次に、MSILとバイトコードがマシンコードにコンパイルされます。

私の理解では、中間言語はスタックとヒープを使用し、プログラムはマシンコードにコンパイルされます。マシンコードはプラットフォームに依存します。たとえば、Windows用のレジスタベースです。

ただし、質問では、回答者の一部にリンクしました。たとえば、BrianR.BondyがCおよびC++の例を提供しています。C ++には仮想マシンがなく、マシンコードに直接コンパイルされていることを私は知っています。私の質問は、仮想マシンを持たないプログラミング言語にはスタックとヒープがありますか?これらのプログラミング言語の場合、マシンコードに直接コンパイルするときに、スタックとヒープを中間表現として使用しますか?

更新スタックベースとレジスタベースの仮想マシンがあることに気付きました。私が尋ねている質問は、すべての物理マシンはレジスタベースですか?

4

1 に答える 1

0

RTX2000シリーズ、UCSD Pascal p-Machine、BurroughsのB5000およびB6000シリーズマシン(この質問から引用:スタックベース)など、プロセッサにスタックベースの命令セットがある物理マシンの例があることを発見しました。マシンはレジスタベースのマシンに依存していますか?)。プロセッサが使用する実際の命令セットはスタックベースである可能性があります。

于 2013-01-30T15:51:20.117 に答える