.field private isFlag:z 定義變量
.method 方法
.parameter 方法參數(shù)
.prologue 方法開始
.line 12 此方法位于第12行
invoke-super 調(diào)用父函數(shù)
const/high16 v0, 0x7fo3 把0x7fo3賦值給v0
invoke-direct 調(diào)用函數(shù)
return-void 函數(shù)返回void
.end method 函數(shù)結(jié)束
new-instance 創(chuàng)建實(shí)例
iput-object 對(duì)象賦值
iget-object 調(diào)用對(duì)象
invoke-static 調(diào)用靜態(tài)函數(shù)
條件跳轉(zhuǎn)分支:
"if-eq vA, vB, :cond_" 如果vA等于vB則跳轉(zhuǎn)到:cond_
"if-ne vA, vB, :cond_" 如果vA不等于vB則跳轉(zhuǎn)到:cond_
"if-lt vA, vB, :cond_" 如果vA小于vB則跳轉(zhuǎn)到:cond_
"if-ge vA, vB, :cond_" 如果vA大于等于vB則跳轉(zhuǎn)到:cond_
"if-gt vA, vB, :cond_" 如果vA大于vB則跳轉(zhuǎn)到:cond_
"if-le vA, vB, :cond_" 如果vA小于等于vB則跳轉(zhuǎn)到:cond_
"if-eqz vA, :cond_" 如果vA等于0則跳轉(zhuǎn)到:cond_
"if-nez vA, :cond_" 如果vA不等于0則跳轉(zhuǎn)到:cond_
"if-ltz vA, :cond_" 如果vA小于0則跳轉(zhuǎn)到:cond_
"if-gez vA, :cond_" 如果vA大于等于0則跳轉(zhuǎn)到:cond_
"if-gtz vA, :cond_" 如果vA大于0則跳轉(zhuǎn)到:cond_
"if-lez vA, :cond_" 如果vA小于等于0則跳轉(zhuǎn)到:cond_
=============================================
if函數(shù)的java代碼:
private boolean ifSense(){
boolean tempFlag = ((3-2)==1)? true : false;
if (tempFlag) {
return true;
}else{
return false;
}
}
if函數(shù)分析:
.method private ifSense()Z
.locals 2
.prologue
.line 22
const/4 v0, 0x1 // v0賦值為1
.line 24
.local v0, tempFlag:Z
if-eqz v0, :cond_0 // 判斷v0是否等于0, 不符合條件向下走, 符合條件執(zhí)行cond_0分支
.line 25
const/4 v1, 0x1 // 符合條件分支
.line 27
:goto_0
return v1
:cond_0
const/4 v1, 0x0 // cond_0分支
goto :goto_0
.end method
###文字描述:如果符合if分支則程序往下走,最終return ; 而如果條件不符合則會(huì)走到 :cond_0分支 , 最終執(zhí)行 goto :goto_0走回 :goto_0返回
======================================================
for函數(shù)java代碼:
private void forSense(){
listStr = new ArrayList<String>(COUNT);
for (int i = 0; i < COUNT; i++) {
listStr.add("現(xiàn)在輪到我上場樂");
}
}
for函數(shù)分析:
.line 40
const/4 v0, 0x0
.local v0, i:I
:goto_0
if-lt v0, v3, :cond_0 // if-lt判斷數(shù)值v0小于v3 , 如不符合往下走, 符合執(zhí)行分支 :cond_0
.line 43
return-void
.line 41
:cond_0 // 標(biāo)簽
iget-object v1, p0, Lcom/example/smalidemo/MainActivity;->listStr:Ljava/util/List; // 引用對(duì)象
const-string v2, "\u73b0\u5728\u8f6e\u5230\u6211\u4e0a\u573a\u4e50"
invoke-interface {v1, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z // List是接口, 所以執(zhí)行接口方法add
.line 40
add-int/lit8 v0, v0, 0x1 // 將第二個(gè)v0寄存器中的值,加上0x1的值放入第一個(gè)寄存器中, 實(shí)現(xiàn)自增長
goto :goto_0 // 回去:goto_0標(biāo)簽
###文字描述:設(shè)定一個(gè)標(biāo)簽goto_0, 判斷v0小于v3, 符合執(zhí)行分支:cond_0 ,然后又跑回:goto_0做繼續(xù)判斷