Jimple

Jimple es una representación intermedia de un programa Java diseñado como una alternativa a la Java basada en la pila bytecode. Se escribe a máquina y basado en tres código de la dirección. Jimple también define una sintaxis concreta.

Introducción

Jimple se quiere para ser más fácil a optimizar que Java bytecode. Incluye sólo 15 operaciones diferentes, así simplificando el análisis del flujo. Por el contraste, Java bytecode incluye sobre 200 operaciones diferentes.

En Jimple, local (y pila) las variables se escriben a máquina y de ahí Jimple es intrínsecamente el tipo seguro. No es así para Java bytecode, cuya seguridad del tipo tiene que ser comprobada por el verificador bytecode.

Shimple es un SSA (asignación sola estática) la variante y Grimp son una versión agregada de Jimple. Aquellas tres representaciones son usadas por el Hollín marco de optimización de Java.

La tarea principal de Jimple es la conversión de bytecode a tres código de la dirección. Esta tarea se llama "Jimplifying", un juego de palabras en "la simplificación". La idea detrás de la conversión, primero investigada por Clark Verbrugge, es asociar una variable a cada posición en la pila. De ahí las operaciones de la pila se hacen asignaciones que implican las variables de la pila.

Ejemplo

Considere bytecode siguiente, que es del papel:

los iload 1//cargan la variable x1 y la empujan en la pila

los iload 2//cargan la variable x2 y la empujan en la pila

los iadd//hacen reventar dos valores y empujan su suma en la pila

los istore 1//hacen reventar un valor de la pila y la almacenan en la variable x1

</pre>

El susodicho traduce al tres código de la dirección siguiente:

stack1 = x1//iload 1

stack2 = x2//iload 2

stack1 = stack1 + stack2//iadd

x1 = stack1//istore 1

</pre>

En general el código que resulta no tiene la forma de la asignación sola estática.

Véase también

Notas

Bibliografía



Buscar