私は好奇心旺盛ですが、なぜSunはJVMをスタックベースにすることに決め、GoogleはDalvikVMをレジスタベースにすることに決めたのですか?
JVMはプラットフォームに依存しないため、ターゲットプラットフォームで特定の数のレジスタが使用可能であるとは想定できないと思います。そのため、JITコンパイラーへのレジスター割り当てなどを延期するだけです。(私が間違っていれば訂正してください。)
それで、Android関係者は、「それは非効率的です。すぐにレジスタベースのvmに行きましょう...」と考えましたか?しかし、待ってください。複数の異なるandroidデバイスがあり、Dalvikが対象としたレジスタの数はいくつですか?Dalvikオペコードは、特定の数のレジスタに対してハードコードされていますか?
現在市場に出ているすべてのAndroidデバイスには、ほぼ同じ数のレジスターがありますか?または、dex-loading中にレジスタの再割り当てが実行されますか?これらすべてをどのように組み合わせるのですか?