BYTECODE CODIGO DE BYTE
BYTECODES SON EL LENGUAJE DE LA MÁQUINA DE LA MÁQUINA VIRTUAL DE JAVA
Cuando se carga una JVM de un archivo de clase, se hace una secuencia de bytecodes para cada método de la clase.
Cada tipo de código de operación tiene una tecla de acceso. / / Bytecode corriente: 03 3b a b a7 ff f9 / / Desmontaje: iconst_0 / / 03 istore_0 / / 3b IINC 0, 1 / / iload_0 / / 1 bis iconst_2 / / 05 imul / / 68 istore_0 / / 3b Ir a -7 / / ff A7 F9
LOS TIPOS PRIMITIVOS LA JVM SOPORTA SIETE TIPOS DE DATOS PRIMITIVOS. PROGRAMADORES DE JAVA PUEDEN DECLARAR Y USAR VARIABLES DE ESTOS TIPOS DE DATOS, Y LOS BYTECODES DE JAVA OPERAR SOBRE ESTOS TIPOS DE DATOS. LOS SIETE TIPOS PRIMITIVOS SE ENUMERAN EN LA TABLA SIGUIENTE:
Tipo Definición byte de un byte firmó dos entero de complemento short de dos bytes firmó dos entero de complemento int 4 bytes con signo complemento a dos con enteros long 8 bytes firmó dos entero de complemento float 4 bytes IEEE 754 de precisión simple flotador double 8 bytes IEEE 754 flotador doble precisión char carácter sin signo de 2 bytes Unicode
Empujar constantes en la pila Muchos códigos de operación empuje constantes en la pila. Códigos de operación indica el valor constante para impulsar de tres maneras diferentes. El valor constante o implícita en el propio código de operación, sigue el código de operación en la secuencia de código de bytes como un operando, o se toma de la piscina constante.
Algunos códigos de operación por sí mismos indican un tipo y un valor constante para empujar. Por ejemplo: el iconst_1 código de operación indica la JVM para empujar un valor entero ACONTINUACION UN EJEMPLO EN LA TABLA
Código de operación Operando (s) Descripción iconst_m1 (Ninguno) empuja int -1 en la pila iconst_0 (Ninguno) empuja int 0 en la pila iconst_1 (Ninguno) empuja a un int en la pila iconst_2 (Ninguno) int empuja dos en la pila iconst_3 (Ninguno) empuja int 3 en la pila iconst_4 (Ninguno) empuja int 4 en la pila iconst_5 (Ninguno) empuja int 5 en la pila fconst_0 (Ninguno) empuja flotador 0 en la pila fconst_1 (Ninguno) empuja un flotador en la pila fconst_2 (Ninguno) empuja el flotador 2 en la pila
Código de operación Operando (s) Descripción bipush byte1 amplía byte1 (un tipo de bytes) a un int y lo empuja en la pila sipush byte1, byte2 amplía byte1, byte2 (un tipo corto) a un int y lo empuja en la pila
Empujar las variables locales en la pila Las variables locales se almacenan en una sección especial del marco de pila. El marco de pila es la porción de la pila que utiliza el método de ejecución en la actualidad. Cada marco de pila se compone de tres secciones - las variables locales
Código de operación Operando (s) Descripción iload Vindex empuja int de Vindex locales de posición variable iload_0 (Ninguno) int empuja desde la posición variable local cero iload_1 (Ninguno) int empuja desde la posición de una variable local iload_2 (Ninguno) int empuja desde la posición variable local dos iload_3 (Ninguno) int empuja desde la posición variable local tres fload Vindex empuja flotador de Vindex locales de posición variable fload_0 (Ninguno) empuja a flote desde la posición variable local cero fload_1 (Ninguno) empuja a flote desde la posición de una variable local fload_2 (Ninguno) empuja a flote desde la posición variable local dos fload_3 (Ninguno) empuja a flote desde la posición variable local tres