Dalvik Virtual Machine

Dalvik è il nome della virtual machine(VM) di Android.
Questa VM é in grado si eseguire file in formato “*.dex”, un formato ottimizzato per l’esecuzione in memoria,
questa VM basata sul registro è in grado di eseguire classi compilate da java e trasformate nel linguaggio
nativo dal tool “dx” fornito con Android SDK.
La VM viene eseguita su un sistema operativo basato sul kernel linux 2.6.
DalvikVm è ottimizzata per essere eseguita in istanze multiple e si caratterizza per un utilizzo ottimizzato
della memoria e per l’isolamento tra le diverse istanze di VM, queste, infatti, risultano protette da eventuali
crash di altre applicazioni.

Differenze rispetto alla javaVM
JavaVM è una virtual machine basata sullo Stack, mentre DarvikVM è basata sui registri, questa differente modalità
operativa è dettata in particolare dalla natura dei processori per dispositivi mobili, questi sono progettati ed
ottimizzati per eseguire le istruzioni basate sui registri. L’esecuzione per registri consente di eseguire il codice
 piu’ velocemente a scapito della dimensione del codice compilato.

StackBased vs Registry Based

Ipotizziamo di dover eseguire la seguenti operazioni e vediamo i vari passi eseguiti dalla VM nelle due condizioni:

c = a + b
d = a + 4;
e = b * 3;

StackBased
push ‘a’
getvar
push b’
getvar
add
push ‘c’
storevar
push ‘a’
getvar
push 4
add
push ‘d’
storevar
push ‘b’
getvar
push 3
multiply
push ‘e’
storevar

Totale : 19 operazioni, 9 parameters.

RegistryBased
getvar R1, “a”
getvar R2, “b”
getvar R3, “c”
getvar R4, “d”
getvar R5, “e”
add R3, R1, R2
add R4, R1, 4
mul R5, R2, 3

8 operazioni, 19 parametri

Per maggiori info: http://www.sidhe.org/~dan/blog/archives/000189.html

Share/Save/Bookmark