Algunos programas de Android se convierten en archivos samli después de la descompilación. ¿Esto está escrito directamente por el programador en lenguaje pequeño o en java?
1, tipo original:
V void solo se puede usar para tipos de valor de retorno.
z Booleano
b bytes
Es corto
c caracteres
I int
p>
J long (64 bits)
f float
d double (64 bits)
Tipo de objeto:
Lpaquete/nombre/NombreObjeto es equivalente a paquete.nombre.NombreObjeto en java, explicado a continuación:
l: Indica que este es un tipo de objeto.
Paquete/nombre: El paquete donde se encuentra el objeto.
;: Indica el final del nombre del objeto.
Forma de representación de matriz:
[I: representa una matriz unidimensional de números enteros, equivalente a int[] de Java;
Para matrices multidimensionales , simplemente agregue [,[[I = int[][]; Nota: Cada dimensión es hasta 255;
Representación de la matriz de objetos:
[Ljava/lang/String representa string Matriz de objetos;
Representación del método:
lPaquete/nombre/nombre de objeto;——& gt;El nombre del método (III)Z se explica a continuación:
Lpaquete/nombre/NombreObjeto representa el tipo.
MethodName representa el nombre del método.
Representación del campo:
l paquete/nombre/nombre de objeto;——>nombre del campo:Ljava/lang/String;
Esto significa:Paquete nombre, nombre del campo y tipo de campo.
Parámetros del método:
Cuando se llama a un método, los parámetros del método se colocan en los últimos n registros.
Por ejemplo, un método tiene dos; parámetros y cinco registros (v0~v4).
Los parámetros luego se colocarán en los dos últimos registros (v3 y v4).
El primer parámetro en un método no estático es siempre el objeto sobre el cual se llama el método.
Nota: Para los métodos estáticos, son iguales excepto que este parámetro no lo es; implícito.
Nombramiento de registros:
v nombramiento
El primer registro llamado p es el primer registro de parámetro en el método.
Comparación: la denominación P sirve para evitar la desventaja de que los registros de parámetros deban volver a numerarse cuando se agreguen registros a métodos en el futuro:
Específicamente: los tipos Long y Double son ambos de 64 bits y necesito 2 registros.
Por ejemplo, para métodos no estáticos
lmy object——>My método (IJZ) V;
Hay cuatro parámetros: LMyObject, int , long, bool requieren cinco registros para almacenar parámetros;
P0 esto
P1 I (entero)
P3·P2 (largo)
P4 Z(Booleano)