.class public LHelloWorld; #定义类名
.super Ljava/lang/Object; #定义父类
.method public static main([Ljava/lang/String;)V #声明静态main()方法
.registers 4 #程序中使用v0、v1、v2寄存器和一个参数寄存器
.parameter #一个参数
.prologue #代码起始指令
#空指令
nop
nop
nop
nop
#数据定义指令 v0 = 8; v1 = 5; v2 = 3;
const/16 v0, 0x8
const/4 v1, 0x5
const/4 v2, 0x3
#数据操作指令 v1 = v2;
move v1, v2
#数组操作指令 v0 = new int[v0]; v1 = v0
new-array v0, v0, [I
array-length v1, v0
#实例操作指令 v1 = new StringBuilder();
new-instance v1, Ljava/lang/StringBuilder;
#方法调用指令 v1.init();
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
#跳转指令 if(v0 != 0)
if-nez v0, :cond_0
goto :goto_0
:cond_0
#数据运算指令 v2 = v2 << v2; (v2 == 24)
shl-int v2, v2, v2
#数据转换指令 v2 = (float) v2;
int-to-float v2, v2
#数据运算指令 v2 += v2; (v2 == 48.0)
add-float v2, v2, v2
#比较指令 v0 = v2 < v2; (v0 == 0)
cmpl-float v0, v2, v2
#字段操作指令 PrintStream v0 = System.out; v1 = "Hello World"
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World" #构造字符串
#方法调用指令 v0.println(v1); v0.println(v2);
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
invoke-virtual {v0, v2}, Ljava/io/PrintStream;->println(F)V
#返回指令
:goto_0
return-void #返回空
.super Ljava/lang/Object; #定义父类
.method public static main([Ljava/lang/String;)V #声明静态main()方法
.registers 4 #程序中使用v0、v1、v2寄存器和一个参数寄存器
.parameter #一个参数
.prologue #代码起始指令
#空指令
nop
nop
nop
nop
#数据定义指令 v0 = 8; v1 = 5; v2 = 3;
const/16 v0, 0x8
const/4 v1, 0x5
const/4 v2, 0x3
#数据操作指令 v1 = v2;
move v1, v2
#数组操作指令 v0 = new int[v0]; v1 = v0
new-array v0, v0, [I
array-length v1, v0
#实例操作指令 v1 = new StringBuilder();
new-instance v1, Ljava/lang/StringBuilder;
#方法调用指令 v1.init();
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
#跳转指令 if(v0 != 0)
if-nez v0, :cond_0
goto :goto_0
:cond_0
#数据运算指令 v2 = v2 << v2; (v2 == 24)
shl-int v2, v2, v2
#数据转换指令 v2 = (float) v2;
int-to-float v2, v2
#数据运算指令 v2 += v2; (v2 == 48.0)
add-float v2, v2, v2
#比较指令 v0 = v2 < v2; (v0 == 0)
cmpl-float v0, v2, v2
#字段操作指令 PrintStream v0 = System.out; v1 = "Hello World"
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World" #构造字符串
#方法调用指令 v0.println(v1); v0.println(v2);
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
invoke-virtual {v0, v2}, Ljava/io/PrintStream;->println(F)V
#返回指令
:goto_0
return-void #返回空
.end method
参考文献:《Android软件安全与逆向分析》