Ich bin gespannt, warum Sun beschlossen hat, die JVM stapelbasiert zu machen, und Google beschlossen hat, die DalvikVM registrierungsbasiert zu machen.
Ich nehme an, die JVM kann nicht wirklich davon ausgehen, dass eine bestimmte Anzahl von Registern auf der Zielplattform verfügbar ist, da sie plattformunabhängig sein soll. Daher verschiebt es einfach die Registerzuordnung usw. an den JIT-Compiler. (Korrigieren Sie mich, wenn ich falsch liege.)
Also dachten die Android-Leute: "Hey, das ist ineffizient, lass uns gleich eine registrierungsbasierte VM wählen ..."? Aber warten Sie, es gibt mehrere verschiedene Android-Geräte. Auf wie viele Register hat der Dalvik abgezielt? Sind die Dalvik-Opcodes für eine bestimmte Anzahl von Registern fest codiert?
Haben alle aktuellen Android-Geräte auf dem Markt ungefähr die gleiche Anzahl von Registern? Oder wird während des Dex-Ladens eine Neuzuweisung des Registers durchgeführt? Wie passt das alles zusammen?