私はここでたくさんの質問を読みました。それはスタックとヒープが何であるかを説明しています。例えばこれは次のとおりです。スタックとヒープはどこにありますか?、とても役に立ちました。
高水準言語は、Javaのバイトコードや.NETプログラムのMSILなどの中間言語にコンパイルされることを理解しています。次に、MSILとバイトコードがマシンコードにコンパイルされます。
私の理解では、中間言語はスタックとヒープを使用し、プログラムはマシンコードにコンパイルされます。マシンコードはプラットフォームに依存します。たとえば、Windows用のレジスタベースです。
ただし、質問では、回答者の一部にリンクしました。たとえば、BrianR.BondyがCおよびC++の例を提供しています。C ++には仮想マシンがなく、マシンコードに直接コンパイルされていることを私は知っています。私の質問は、仮想マシンを持たないプログラミング言語にはスタックとヒープがありますか?これらのプログラミング言語の場合、マシンコードに直接コンパイルするときに、スタックとヒープを中間表現として使用しますか?
更新スタックベースとレジスタベースの仮想マシンがあることに気付きました。私が尋ねている質問は、すべての物理マシンはレジスタベースですか?