乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Smali語法

       狂月疏星 2016-04-06

      Smali語法:數(shù)據(jù)類型、方法和字段

      數(shù)據(jù)類型
      dalvik字節(jié)碼有兩種類型,原始類型和引用類型。對象和數(shù)組是引用類型,其它都是原始類型。

      smali數(shù)據(jù)類型都是用一個字母表示,如果你熟悉Java的數(shù)據(jù)類型,你會發(fā)現(xiàn)表示smali數(shù)據(jù)類型的字母其實是Java基本數(shù)據(jù)類型首字母的大寫,除boolean類型外,在smail中用大寫的”Z”表示boolean類型。

      V void,只能用于返回值類型
      Z boolean
      B byte
      S short
      C char
      I int
      J long (64 bits)
      F float
      D double (64 bits)

      對象以Lpackage/name/ObjectName;的形式表示。前面的L表示這是一個對象類型,package/name/是該對象所在的包,ObjectName是對象的名字,“;”表示對象名稱的結(jié)束。相當(dāng)于java中的package.name.ObjectName。

      例如:Ljava/lang/String;相當(dāng)于java.lang.String

      數(shù)組的表示形式?

      [I——表示一個整型一維數(shù)組,相當(dāng)于java中的int[]。? 對于多維數(shù)組,只要增加[就行了。[[I相當(dāng)于int[][],[[[I相當(dāng)于int[][][]。注意每一維的最多255個。?

      對象數(shù)組的表示

      [Ljava/lang/String;表示一個String對象數(shù)組。

      方法

      方法通常必須詳細的指定方法類型(?the type that contains the method) 方法名,參數(shù)類型,返回類型,所有這些信息都是為虛擬機是能夠找到正確的方法并執(zhí)行。

      方法表示形式:Lpackage/name/ObjectName;->MethodName(III)Z?

      在上面的例子中,Lpackage/name/ObjectName;表示類型,MethodName是方法名。III為參數(shù)(在此是3個整型參數(shù)),Z是返回類型(bool型)。?

      方法的參數(shù)是一個接一個的,中間沒有隔開。

      一個更復(fù)雜的例子:method(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

      在java中則為:String method(int, int[][], int, String, Object[])

      一個比較全面的例子:

      .class public interface abstract Lcom/kit/network/CachableImage;
      .super Ljava/lang/Object;
      .source 'SourceFile'

      virtual methods

      .method public abstract getIsLarge()Z
      .end method

      .method public abstract getUrl()Ljava/lang/String;
      .end method

      .method public abstract getViewContext()Landroid/content/Context;
      .end method

      .method public abstract setBitmap(Landroid/graphics/Bitmap;Z)V
      .end method

      .method public abstract setIsLarge(Z)V
      .end method

      .method public abstract setUrl(Ljava/lang/String;)V
      .end method上面的smali代碼還原后的java代碼為:

      //#注:在實際代碼中我們還必須引入相關(guān)的包
      import android.content.Context;
      import android.graphics.Bitmap;

      public interface CachableImage {

      public abstract boolean getIsLarge();

      public abstract String getUrl();

      public abstract Context getViewContext();

      public abstract void setBitmap(Bitmap bitmap);

      public abstract void setIsLarge(boolean islarge);

      public abstract void setUrl(String url);
      }

      字段

      表示形式:Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;即包名,字段名和各字段類型。 eg:

      .field private _requestLayout:Z

      .field public isLarge:Z

      .field public resize:Z

      .field public thumbnailSize:I

      .field public url:Ljava/lang/String;還原后的java代碼為:

      public boolean _requestLayout;
      public boolean isLarge;
      public boolean resize;
      public int thumbnailSize;
      public String url;

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多