6

Semánticamente, la VM Dalvik tiene un nuevo conjunto de registros para cada método y no tiene instrucciones para acceder a la pila de llamadas. Pero en términos de su implementación, los registros deberían guardarse de alguna manera en las llamadas a métodos y restaurarse en los retornos de métodos. ¿Cómo hace esto (la implementación de Google) a Dalvik?¿Cómo guarda y restaura la máquina virtual Dalvik sus registros entre llamadas a métodos?

+0

¿Se puede acceder a la fuente de la implementación de Google Dalvik? También tenga en cuenta que existe una diferencia entre * código de bytes Dalvik * que no tiene acceso a una "pila de llamadas" y la * implementación * que ejecuta dicho código de bytes que no tiene dicho acceso. (Es * debe * tener alguna forma de mantener el estado; mire los contratos para llamadas a métodos como un comienzo ;-) –

+0

Simplemente inserta el contexto anterior en su pila de llamadas internas cuando se ingresa un método y aparece cuando sale un método . –

+0

@pst: Android es de código abierto, por supuesto, la fuente es accesible :) – JesusFreke

Respuesta

1

Aquí está el repositorio fuente de dalvik, puede consultar la implementación de findout. android source

3

Los registros a los que se refiere bytecode dalvik no son registros de máquina en absoluto, pero en realidad son ubicaciones en la pila de llamadas. Cada vez que llama a un método, dalvik asigna suficiente memoria en el marco de pila de ese método para contener todos los registros que ese método necesita.

Tenga en cuenta que no todos los cálculos modificarán inmediatamente el valor de la pila, obviamente la vm tiene que cargar los valores en un registro de la máquina para realizar los cálculos. Los resultados se pueden guardar en un registro de máquina para usarlo más tarde sin escribirlo de inmediato en la ubicación de la pila correspondiente, a discreción de la máquina virtual. Los valores se volverán a enviar a la pila de llamadas cuando sea necesario (es decir, cuando llame a otro método, use varias construcciones de sincronización o necesite el registro para otro cálculo, etc.).

Cuestiones relacionadas