怎么学习smali呢?最好的学习方法莫过于写一个能跑的Hello world 出来,那样既可以检测学习效果,又可以培养兴趣,至少我非常喜欢这样的学习方式。下面介绍一下本次的主角:smali 版本的Hello world。
1.编写代码 hello.smali
.class public LHelloworld;
.super Ljava/lang/Object;
.method public static main([Ljava/lang/String;)V
.registers 4
.parameter
.prologue
const/16 v0, 0x8
const/4 v1, 0x5
const/4 v2, 0x3
move v1, v2
new-array v0, v0, [I
array-length v1,v0
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
if-nez v0, :cond_0
goto :goto_0
:cond_0
int-to-float v2, v2
add-float v2, v2, v2
cmpl-float v0, v2, v2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello world"
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
:goto_0
return-void
.end method
2. 编译smali文件