궁금합니다. Sun이 JVM 스택 기반을 만들기로 결정하고 Google이 DalvikVM 레지스터 기반을 만들기로 결정한 이유는 무엇입니까?
JVM은 플랫폼 독립적이어야하므로 대상 플랫폼에서 특정 수의 레지스터를 사용할 수 있다고 실제로 가정 할 수 없다고 가정합니다. 따라서 JIT 컴파일러에 대한 레지스터 할당 등을 연기합니다. (틀 렸으면 말해줘.)
그래서 Android 직원들은 "이건 비효율적입니다. 즉시 레지스터 기반 VM을 사용합시다 ..."라고 생각 했습니까? 하지만 잠깐, 여러 다른 안드로이드 기기가 있는데, Dalvik은 몇 개의 레지스터를 목표로 했나요? Dalvik opcode는 특정 수의 레지스터에 대해 하드 코딩됩니까?
현재 시장에 나와있는 모든 Android 장치에 거의 동일한 수의 레지스터가 있습니까? 또는 dex-loading 중에 레지스터 재 할당이 수행됩니까? 이 모든 것이 어떻게 결합됩니까?