mirror of
https://github.com/revanced/smali.git
synced 2025-06-13 04:27:38 +02:00
moved the examples
git-svn-id: https://smali.googlecode.com/svn/trunk@79 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
6
examples/AnnotationValues/10.smali
Normal file
6
examples/AnnotationValues/10.smali
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.class public L10;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
.method public static 11()V
|
||||||
|
return-void
|
||||||
|
.end method
|
67
examples/AnnotationValues/AnnotationWithValues.smali
Normal file
67
examples/AnnotationValues/AnnotationWithValues.smali
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
.class public abstract interface annotation LAnnotationWithValues;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
.implements Ljava/lang/annotation/Annotation;
|
||||||
|
|
||||||
|
.method public abstract booleanValue()Z
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract byteValue()B
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract charValue()C
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract shortValue()S
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract intValue()I
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract longValue()J
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract floatValue()F
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract doubleValue()D
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract stringValue()Ljava/lang/String;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract subAnnotationValue()LSubAnnotation;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract typeValue()Ljava/lang/Class;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public abstract methodValue()Ljava/lang/reflect/Method;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
;dalvik doesn't seem to like field values
|
||||||
|
;.method public abstract fieldValue()Ljava/lang/reflect/Field;
|
||||||
|
;.end method
|
||||||
|
|
||||||
|
.method public abstract enumValue()LEnum;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.annotation system Ldalvik/annotation/AnnotationDefault;
|
||||||
|
value = .subannotation LAnnotationWithValues;
|
||||||
|
booleanValue = false
|
||||||
|
byteValue = 1t
|
||||||
|
charValue = '2'
|
||||||
|
shortValue = 3s
|
||||||
|
intValue = 4
|
||||||
|
longValue = 5l
|
||||||
|
floatValue = 6.0f
|
||||||
|
doubleValue = 7.0
|
||||||
|
stringValue = "8"
|
||||||
|
subAnnotationValue = .subannotation LSubAnnotation;
|
||||||
|
stringValue = "9"
|
||||||
|
.end subannotation
|
||||||
|
typeValue = L10;
|
||||||
|
methodValue = L10;->11()V
|
||||||
|
enumValue = .enum LEnum;->12:LEnum;
|
||||||
|
.end subannotation
|
||||||
|
.end annotation
|
||||||
|
|
52
examples/AnnotationValues/Enum.smali
Normal file
52
examples/AnnotationValues/Enum.smali
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
.class public final enum LEnum;
|
||||||
|
.super Ljava/lang/Enum;
|
||||||
|
|
||||||
|
.field private static final synthetic $VALUES:[LEnum;
|
||||||
|
|
||||||
|
.field public static final enum 12:LEnum;
|
||||||
|
|
||||||
|
.method static constructor <clinit>()V
|
||||||
|
.registers 4
|
||||||
|
|
||||||
|
const/4 v3, 1
|
||||||
|
const/4 v2, 0
|
||||||
|
new-instance v0, LEnum;
|
||||||
|
const-string v1, "12"
|
||||||
|
invoke-direct {v0, v1, v2}, LEnum;-><init>(Ljava/lang/String;I)V
|
||||||
|
sput-object v0, LEnum;->12:LEnum;
|
||||||
|
|
||||||
|
const/4 v0, 1
|
||||||
|
new-array v0, v0, [LEnum;
|
||||||
|
sget-object v1, LEnum;->12:LEnum;
|
||||||
|
aput-object v1, v0, v2
|
||||||
|
|
||||||
|
sput-object v0, LEnum;->$VALUES:[LEnum;
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method private constructor <init>(Ljava/lang/String;I)V
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
invoke-direct {v0, v1, v2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static valueOf(Ljava/lang/String;)LEnum;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const-class v0, LEnum;
|
||||||
|
invoke-static {v0, v1}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
|
||||||
|
move-result-object v1
|
||||||
|
check-cast v1, LEnum;
|
||||||
|
return-object v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static values()[LEnum;
|
||||||
|
.registers 1
|
||||||
|
|
||||||
|
sget-object v0, LEnum;->$VALUES:[LEnum;
|
||||||
|
invoke-virtual {v0}, [LEnum;->clone()Ljava/lang/Object;
|
||||||
|
move-result-object v0
|
||||||
|
check-cast v0, [LEnum;
|
||||||
|
return-object v0
|
||||||
|
.end method
|
25
examples/AnnotationValues/Main.smali
Normal file
25
examples/AnnotationValues/Main.smali
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
.class public LMain;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
;expected output:
|
||||||
|
;@AnnotationWithValues(booleanValue=false, byteValue=1, charValue=2, doubleValue=7.0, enumValue=12, floatValue=6.0, intValue=4, longValue=5, methodValue=public static void 10.11(), shortValue=3, stringValue=8, subAnnotationValue=@SubAnnotation(stringValue=9), typeValue=class 10)
|
||||||
|
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
||||||
|
|
||||||
|
const-class v1, LMain;
|
||||||
|
const-class v2, LAnnotationWithValues;
|
||||||
|
|
||||||
|
invoke-virtual {v1, v2}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.annotation runtime LAnnotationWithValues;
|
||||||
|
.end annotation
|
6
examples/AnnotationValues/SubAnnotation.smali
Normal file
6
examples/AnnotationValues/SubAnnotation.smali
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
.class public abstract interface annotation LSubAnnotation;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
.implements Ljava/lang/annotation/Annotation;
|
||||||
|
|
||||||
|
.method public abstract stringValue()Ljava/lang/String;
|
||||||
|
.end method
|
97
examples/Constants.smali
Normal file
97
examples/Constants.smali
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
.class public org/JesusFreke/HelloWorld2/HelloWorld2
|
||||||
|
.super android/app/Activity
|
||||||
|
|
||||||
|
.field private static final stringConstant1 Ljava/lang/String; = "Hello World!"
|
||||||
|
.field private static final stringConstant2 Ljava/lang/String; = ""
|
||||||
|
.field private static final stringConstant3 Ljava/lang/String; = "a\b\n\f\r\"\'\\\u1234\u0000\u000a\u000d"
|
||||||
|
|
||||||
|
.field private static final charConstant1 C = 'a'
|
||||||
|
.field private static final charConstant2 C = '\b' ;backspace
|
||||||
|
.field private static final charConstant3 C = '\n'
|
||||||
|
.field private static final charConstant4 C = '\f' ;formfeed
|
||||||
|
.field private static final charConstant5 C = '\r'
|
||||||
|
.field private static final charConstant6 C = '\"'
|
||||||
|
.field private static final charConstant7 C = '\''
|
||||||
|
.field private static final charConstant8 C = '\\'
|
||||||
|
.field private static final charConstant9 C = '\0'
|
||||||
|
.field private static final charConstant10 C = '\7'
|
||||||
|
.field private static final charConstant11 C = '\77'
|
||||||
|
.field private static final charConstant12 C = '\377'
|
||||||
|
|
||||||
|
.field private static final intDecConstant1 I = 0
|
||||||
|
.field private static final intDecConstant2 I = 1
|
||||||
|
.field private static final intDecConstant3 I = 1000
|
||||||
|
.field private static final intDecConstant4 I = 1024
|
||||||
|
.field private static final intDecConstant5 I = 2147483647
|
||||||
|
.field private static final intDecConstant6 I = -0
|
||||||
|
.field private static final intDecConstant7 I = -1
|
||||||
|
.field private static final intDecConstant8 I = -1000
|
||||||
|
.field private static final intDecConstant9 I = -1024
|
||||||
|
.field private static final intDecConstant10 I = -2147483648
|
||||||
|
|
||||||
|
.field private static final intHexConstant1 I = 0x0
|
||||||
|
.field private static final intHexConstant2 I = 0x00
|
||||||
|
.field private static final intHexConstant3 I = 0x1
|
||||||
|
.field private static final intHexConstant4 I = 0x01
|
||||||
|
.field private static final intHexConstant5 I = 0x3E8 ;1000
|
||||||
|
.field private static final intHexConstant6 I = 0x400 ;1024
|
||||||
|
.field private static final intHexConstant7 I = 0x7fffffff ;2147483647
|
||||||
|
.field private static final intHexConstant8 I = 0xFFFFFFFF ;-1
|
||||||
|
.field private static final intHexConstant9 I = 0xFFFFFC18 ;-1000
|
||||||
|
.field private static final intHexConstant10 I = 0xFFFFFC00 ;-1024
|
||||||
|
.field private static final intHexConstant11 I = 0x80000000 ;-2147483648
|
||||||
|
|
||||||
|
.field private static final longDecConstant1 J = 0L
|
||||||
|
.field private static final longDecConstant2 J = 1L
|
||||||
|
.field private static final longDecConstant3 J = 1000L
|
||||||
|
.field private static final longDecConstant4 J = 1024L
|
||||||
|
.field private static final longDecConstant5 J = 2147483647L
|
||||||
|
.field private static final longDecConstant5 J = 2147483648L
|
||||||
|
.field private static final longDecConstant5 J = 9223372036854775807L
|
||||||
|
.field private static final longDecConstant6 J = -0L
|
||||||
|
.field private static final longDecConstant7 J = -1L
|
||||||
|
.field private static final longDecConstant8 J = -1000L
|
||||||
|
.field private static final longDecConstant9 J = -1024L
|
||||||
|
.field private static final longDecConstant10 J = -2147483648L
|
||||||
|
.field private static final longDecConstant10 J = -2147483649L
|
||||||
|
.field private static final longDecConstant10 J = -9223372036854775808L
|
||||||
|
|
||||||
|
.field private static final longHexConstant1 J = 0x0L
|
||||||
|
.field private static final longHexConstant2 J = 0x00L
|
||||||
|
.field private static final longHexConstant3 J = 0x1L
|
||||||
|
.field private static final longHexConstant4 J = 0x01L
|
||||||
|
.field private static final longHexConstant5 J = 0x3E8L ;1000
|
||||||
|
.field private static final longHexConstant6 J = 0x400L ;1024
|
||||||
|
.field private static final longHexConstant7 J = 0x7fffffffL ;2147483647
|
||||||
|
.field private static final longHexConstant7 J = 0x80000000L ;2147483648
|
||||||
|
.field private static final longHexConstant7 J = 0x7fffffffffffffffL ;9223372036854775807
|
||||||
|
.field private static final longHexConstant8 J = 0xFFFFFFFFFFFFFFFFL ;-1
|
||||||
|
.field private static final longHexConstant9 J = 0xFFFFFFFFFFFFFC18L ;-1000
|
||||||
|
.field private static final longHexConstant10 J = 0xFFFFFFFFFFFFFC00L ;-1024
|
||||||
|
.field private static final longHexConstant11 J = 0xFFFFFFFF80000000L ;-2147483648
|
||||||
|
.field private static final longHexConstant11 J = 0xFFFFFFFF7FFFFFFFL ;-2147483649
|
||||||
|
.field private static final longHexConstant12 J = 0x8000000000000000L ;-9223372036854775808
|
||||||
|
|
||||||
|
.method public constructor <init>()V
|
||||||
|
.registers 1
|
||||||
|
invoke-direct {v0} android/app/Activity.<init>()V
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public onCreate(Landroid/os/Bundle;)V
|
||||||
|
.registers 4
|
||||||
|
|
||||||
|
sget-object v0 java/lang/System.out Ljava/io/PrintStream;
|
||||||
|
|
||||||
|
invoke-super {v2,v3} android/app/Activity.onCreate(Landroid/os/Bundle;)V
|
||||||
|
|
||||||
|
new-instance v0 android/widget/TextView
|
||||||
|
invoke-direct {v0,v2} android/widget/TextView.<init>(Landroid/content/Context;)V
|
||||||
|
const-string v1 "Hello World!"
|
||||||
|
invoke-virtual {v0,v1} android/widget/TextView.setText(Ljava/lang/CharSequence;)V
|
||||||
|
invoke-virtual {v2,v0} org/JesusFreke/HelloWorld2/HelloWorld2.setContentView(Landroid/view/View;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
73
examples/Enums/Enum.smali
Normal file
73
examples/Enums/Enum.smali
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
.class public final enum LEnum;
|
||||||
|
.super Ljava/lang/Enum;
|
||||||
|
|
||||||
|
;This class is an example of how to define an enum. You have
|
||||||
|
;to do all of the work that java normally takes care of
|
||||||
|
|
||||||
|
.field private static final synthetic $VALUES:[LEnum;
|
||||||
|
|
||||||
|
.field public static final enum VALUE1:LEnum;
|
||||||
|
.field public static final enum VALUE2:LEnum;
|
||||||
|
|
||||||
|
.method static constructor <clinit>()V
|
||||||
|
.registers 4
|
||||||
|
|
||||||
|
;create an instance of this class for the VALUE1 value
|
||||||
|
new-instance v0, LEnum;
|
||||||
|
const-string v1, "VALUE1"
|
||||||
|
const/4 v2, 0
|
||||||
|
invoke-direct {v0, v1, v2}, LEnum;-><init>(Ljava/lang/String;I)V
|
||||||
|
|
||||||
|
;and store it in VALUE1
|
||||||
|
sput-object v0, LEnum;->VALUE1:LEnum;
|
||||||
|
|
||||||
|
;create an instance of this class for the VALUE2 value
|
||||||
|
new-instance v0, LEnum;
|
||||||
|
const-string v1, "VALUE2"
|
||||||
|
const/4 v3, 1
|
||||||
|
invoke-direct {v0, v1, v3}, LEnum;-><init>(Ljava/lang/String;I)V
|
||||||
|
|
||||||
|
;and store it in VALUE2
|
||||||
|
sput-object v0, LEnum;->VALUE2:LEnum;
|
||||||
|
|
||||||
|
;create an array of Enums, for the $VALUES member
|
||||||
|
const/4 v0, 2
|
||||||
|
new-array v0, v0, [LEnum;
|
||||||
|
|
||||||
|
;add VALUE1 to the array
|
||||||
|
sget-object v1, LEnum;->VALUE1:LEnum;
|
||||||
|
aput-object v1, v0, v2
|
||||||
|
|
||||||
|
;add VALUE2 to the array
|
||||||
|
sget-object v1, LEnum;->VALUE2:LEnum;
|
||||||
|
aput-object v1, v0, v3
|
||||||
|
|
||||||
|
;and store the array in $VALUES
|
||||||
|
sput-object v0, LEnum;->$VALUES:[LEnum;
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method private constructor <init>(Ljava/lang/String;I)V
|
||||||
|
.registers 3
|
||||||
|
invoke-direct {v0, v1, v2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static valueof(Ljava/lang/String;)LEnum;
|
||||||
|
.registers 2
|
||||||
|
const-class v0, LEnum;
|
||||||
|
invoke-static {v0, v1}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
|
||||||
|
move-result-object v1
|
||||||
|
check-cast v1, LEnum;
|
||||||
|
return-object v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static values()[LEnum;
|
||||||
|
.registers 1
|
||||||
|
sget-object v0, LEnum;->$VALUES:[LEnum;
|
||||||
|
invoke-virtual {v0}, [LEnum;->clone()Ljava/lang/Object;
|
||||||
|
move-result-object v0
|
||||||
|
check-cast v0, [LEnum;
|
||||||
|
return-object v0
|
||||||
|
.end method
|
15
examples/Enums/Main.smali
Normal file
15
examples/Enums/Main.smali
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.class public LMain;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
||||||
|
sget-object v1, LEnum;->VALUE1:LEnum;
|
||||||
|
|
||||||
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
23
examples/HelloWorld/HelloWorld.smali
Normal file
23
examples/HelloWorld/HelloWorld.smali
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.class public LHelloWorld;
|
||||||
|
|
||||||
|
;Ye olde hello world application
|
||||||
|
;To assemble and run this on a phone or emulator:
|
||||||
|
;
|
||||||
|
;java -jar smali.jar --dex HelloWorld.smali
|
||||||
|
;zip HelloWorld.zip classes.dex
|
||||||
|
;adb push HelloWorld.zip /data/local
|
||||||
|
;adb shell dalvikvm -cp /data/local/HelloWorld.zip HelloWorld
|
||||||
|
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
812
examples/HelloWorld2.smali
Normal file
812
examples/HelloWorld2.smali
Normal file
@ -0,0 +1,812 @@
|
|||||||
|
.class public Lorg/JesusFreke/HelloWorld2/HelloWorld2;
|
||||||
|
|
||||||
|
.super Landroid/app/Activity;
|
||||||
|
|
||||||
|
.source "HelloWorld2.smali"
|
||||||
|
|
||||||
|
;two random interfaces with only a single method to implement
|
||||||
|
.implements Landroid/util/Printer;
|
||||||
|
.implements Landroid/accounts/AccountMonitorListener;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.method public println(Ljava/lang/String;)V
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.method public onAccountsUpdated([Ljava/lang/String;)V
|
||||||
|
.parameter "currentAccounts"
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.registers 2
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public static parameterNameTest(IIII)V
|
||||||
|
.registers 4
|
||||||
|
.parameter "test1"
|
||||||
|
.parameter "test2"
|
||||||
|
.parameter
|
||||||
|
.parameter "test4"
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.field private helloWorld Ljava/lang/String;
|
||||||
|
.field private static helloWorldStatic Ljava/lang/String;
|
||||||
|
|
||||||
|
.field private static helloWorldStatic2 Ljava/lang/String; = "Static Initializer Hello World!"
|
||||||
|
|
||||||
|
;This class should display the following text to the screen:
|
||||||
|
;
|
||||||
|
;Hello World!
|
||||||
|
;Static Hello World!
|
||||||
|
;Static Initializer Hello World!
|
||||||
|
;org/JesusFreke/HelloWorld2/HelloWorld2
|
||||||
|
;[Lorg/JesusFreke/HelloWorld2/HelloWorld2;
|
||||||
|
;[I
|
||||||
|
;0
|
||||||
|
;-8
|
||||||
|
;7
|
||||||
|
;Format10t with a label
|
||||||
|
;Format10t with an offset
|
||||||
|
;Format20t with a label
|
||||||
|
;Format30t with a label
|
||||||
|
;Testing Format22x and Format32x
|
||||||
|
;Testing Format21t
|
||||||
|
;-32768
|
||||||
|
;-2147483648
|
||||||
|
;-9223372036854775808
|
||||||
|
;-1
|
||||||
|
;20
|
||||||
|
;1
|
||||||
|
;Testing Format22t
|
||||||
|
;20025
|
||||||
|
;286331153
|
||||||
|
;Testing Format31c
|
||||||
|
;5000000000
|
||||||
|
;5000000
|
||||||
|
;Label12
|
||||||
|
;Label13
|
||||||
|
;In the exception handler.
|
||||||
|
|
||||||
|
|
||||||
|
.method static constructor <clinit>()V ;test
|
||||||
|
.registers 1
|
||||||
|
|
||||||
|
const-string v0, "Static Hello World!"
|
||||||
|
sput-object v0, org/JesusFreke/HelloWorld2/HelloWorld2/helloWorldStatic Ljava/lang/String; ;test
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public constructor <init>()V
|
||||||
|
.registers 2
|
||||||
|
invoke-direct {v1}, android/app/Activity/<init>()V
|
||||||
|
|
||||||
|
const-string v0, "Hello World!"
|
||||||
|
iput-object v0, v1, org/JesusFreke/HelloWorld2/HelloWorld2/helloWorld Ljava/lang/String;;test
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public largeRegisterTest()Ljava/lang/String;
|
||||||
|
.registers 1235
|
||||||
|
|
||||||
|
const-string v1, "Testing Format22x and Format32x"
|
||||||
|
move-object/16 v1234, v1
|
||||||
|
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
move-object/from16 v1, v1234
|
||||||
|
|
||||||
|
return-object v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat21t()Ljava/lang/String;
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
const-string v0, "Testing Format21t"
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
const/4 v2, 0
|
||||||
|
|
||||||
|
if-eqz v2, HERE:
|
||||||
|
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
HERE:
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testFormat21s()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const/16 v0, -32768
|
||||||
|
|
||||||
|
invoke-static {v0}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
return-object v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testFormat22s()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
const/16 v0, 25
|
||||||
|
|
||||||
|
add-int/lit16 v1, v0, 20000
|
||||||
|
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat21h()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const/high16 v0, -32768
|
||||||
|
|
||||||
|
invoke-static {v0}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
return-object v1
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testFormat21h-wide()Ljava/lang/String;
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
const-wide/high16 v0, -32768
|
||||||
|
|
||||||
|
invoke-static {v0, v1}, java/lang/Long/toString(J)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
return-object v2
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat23x()Ljava/lang/String;
|
||||||
|
.registers 7
|
||||||
|
|
||||||
|
const-wide/16 v0, 1
|
||||||
|
const-wide/high16 v2, 1
|
||||||
|
|
||||||
|
cmp-long v4, v0, v2
|
||||||
|
|
||||||
|
invoke-static {v4}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v6
|
||||||
|
|
||||||
|
|
||||||
|
return-object v6
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat22b()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const/16 v0, -10
|
||||||
|
add-int/lit8 v1, v0, 30
|
||||||
|
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat22cType()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const-string v0, "test"
|
||||||
|
|
||||||
|
instance-of v1, v0, Ljava/lang/String;
|
||||||
|
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat22t()Ljava/lang/String;
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
const/16 v1, 1
|
||||||
|
const/16 v2, 1
|
||||||
|
|
||||||
|
if-eq v1, v2, skip:
|
||||||
|
|
||||||
|
const-string v0, "This shouldn't be displayed!"
|
||||||
|
return-object v0
|
||||||
|
|
||||||
|
skip:
|
||||||
|
|
||||||
|
const-string v0, "Testing Format22t"
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testFormat31i()Ljava/lang/String;
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
const v0, 305419896
|
||||||
|
|
||||||
|
const v1, -19088743
|
||||||
|
|
||||||
|
add-int v2, v0, v1
|
||||||
|
|
||||||
|
invoke-static {v2}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testFormat31c()Ljava/lang/String;
|
||||||
|
.registers 1
|
||||||
|
|
||||||
|
const-string/jumbo v0, "Testing Format31c"
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testFormat51l()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const-wide v0, 5000000000L
|
||||||
|
invoke-static {v0, v1}, java/lang/Long/toString(J)Ljava/lang/String;
|
||||||
|
move-result-object v0
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testArrayFillData()Ljava/lang/String;
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
const v0, 7
|
||||||
|
new-array v0, v0, [I
|
||||||
|
fill-array-data v0, ArrayData:
|
||||||
|
|
||||||
|
const v1, 6
|
||||||
|
aget v2, v0, v1
|
||||||
|
|
||||||
|
invoke-static {v2}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
return-object v2
|
||||||
|
|
||||||
|
ArrayData:
|
||||||
|
|
||||||
|
.array-data 4
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4 5 6
|
||||||
|
|
||||||
|
;5000000
|
||||||
|
;0x40T 0x4BT 0x4CT 0x00T
|
||||||
|
7.006492321624085e-39f
|
||||||
|
|
||||||
|
.end array-data
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testPackedSwitch()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const v0, 12
|
||||||
|
|
||||||
|
switch:
|
||||||
|
packed-switch v0, PackedSwitch:
|
||||||
|
|
||||||
|
Label10:
|
||||||
|
const-string v1, "Label10"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label11:
|
||||||
|
const-string v1, "Label11"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label12:
|
||||||
|
const-string v1, "Label12"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label13:
|
||||||
|
const-string v1, "Label13"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
PackedSwitch:
|
||||||
|
.packed-switch switch: 10
|
||||||
|
Label10:
|
||||||
|
Label11:
|
||||||
|
Label12:
|
||||||
|
Label13:
|
||||||
|
.end packed-switch
|
||||||
|
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
.method public testSparseSwitch()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
const v0, 13
|
||||||
|
|
||||||
|
switch:
|
||||||
|
sparse-switch v0, SparseSwitch:
|
||||||
|
|
||||||
|
Label10:
|
||||||
|
const-string v1, "Label10"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label20:
|
||||||
|
const-string v1, "Label20"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label15:
|
||||||
|
const-string v1, "Label15"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label13:
|
||||||
|
const-string v1, "Label13"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
Label99:
|
||||||
|
const-string v1, "Label99"
|
||||||
|
return-object v1
|
||||||
|
|
||||||
|
SparseSwitch:
|
||||||
|
.sparse-switch switch:
|
||||||
|
10 -> Label10:
|
||||||
|
13 -> Label13:
|
||||||
|
15 -> Label15:
|
||||||
|
20 -> Label20:
|
||||||
|
99 -> Label99:
|
||||||
|
.end sparse-switch
|
||||||
|
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public testTry()Ljava/lang/String;
|
||||||
|
.registers 2
|
||||||
|
|
||||||
|
.line 4
|
||||||
|
|
||||||
|
;0
|
||||||
|
|
||||||
|
|
||||||
|
const-string v0, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
.local v0, testVarName Ljava/lang/String;
|
||||||
|
|
||||||
|
.prologue
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;2
|
||||||
|
|
||||||
|
tryStart:
|
||||||
|
new-instance v1, Ljava/lang/Exception;
|
||||||
|
|
||||||
|
.local v1, testVarName2 Ljava/lang/String;, "some weird type"
|
||||||
|
|
||||||
|
.line 2
|
||||||
|
|
||||||
|
;4
|
||||||
|
|
||||||
|
.end local v0
|
||||||
|
|
||||||
|
invoke-direct {v1}, java/lang/Exception/<init>()V
|
||||||
|
|
||||||
|
;7
|
||||||
|
|
||||||
|
throw v1
|
||||||
|
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
.restart local v0
|
||||||
|
|
||||||
|
.line 5
|
||||||
|
|
||||||
|
;10
|
||||||
|
tryEnd:
|
||||||
|
|
||||||
|
return-object v0
|
||||||
|
|
||||||
|
.source "blahblah.java"
|
||||||
|
.line 90
|
||||||
|
|
||||||
|
;11
|
||||||
|
|
||||||
|
|
||||||
|
.epilogue
|
||||||
|
|
||||||
|
.catch Ljava/lang/Exception; {tryStart: .. tryEnd:} handler:
|
||||||
|
|
||||||
|
handler:
|
||||||
|
const-string v0, "In the exception handler."
|
||||||
|
return-object v0
|
||||||
|
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.method public onCreate(Landroid/os/Bundle;)V
|
||||||
|
.registers 6
|
||||||
|
|
||||||
|
.line 1
|
||||||
|
|
||||||
|
invoke-super {v4,v5}, android/app/Activity/onCreate(Landroid/os/Bundle;)V
|
||||||
|
|
||||||
|
const-string v3, "\n"
|
||||||
|
|
||||||
|
new-instance v0, Landroid/widget/TextView;
|
||||||
|
invoke-direct {v0,v4}, android/widget/TextView/<init>(Landroid/content/Context;)V
|
||||||
|
|
||||||
|
.line 3
|
||||||
|
|
||||||
|
iget-object v1, v4, org/JesusFreke/HelloWorld2/HelloWorld2/helloWorld Ljava/lang/String;
|
||||||
|
|
||||||
|
invoke-virtual {v1, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
sget-object v2, org/JesusFreke/HelloWorld2/HelloWorld2/helloWorldStatic Ljava/lang/String;
|
||||||
|
invoke-virtual {v1, v2}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v1, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
sget-object v2, org/JesusFreke/HelloWorld2/HelloWorld2/helloWorldStatic2 Ljava/lang/String;
|
||||||
|
invoke-virtual/range {v1 .. v2}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
|
||||||
|
invoke-virtual {v1, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
const-class v2, Lorg/JesusFreke/HelloWorld2/HelloWorld2;
|
||||||
|
invoke-virtual {v2}, java/lang/Class/getName()Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual/range {v1 .. v2}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
invoke-virtual {v1, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
const-class v2, [Lorg/JesusFreke/HelloWorld2/HelloWorld2;
|
||||||
|
invoke-virtual {v2}, java/lang/Class/getName()Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual/range {v1 .. v2}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
invoke-virtual {v1, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
const-class v2, [I
|
||||||
|
invoke-virtual {v2}, java/lang/Class/getName()Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual/range {v1 .. v2}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
move-object v2, v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test out Format11n, with various literals
|
||||||
|
;with 0
|
||||||
|
const/4 v1, 0
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;with -8
|
||||||
|
const/4 v1, -8
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;with 7
|
||||||
|
const/4 v1, 7
|
||||||
|
invoke-static {v1}, java/lang/Integer/toString(I)Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format10t with a label
|
||||||
|
goto SKIP:
|
||||||
|
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
SKIP:
|
||||||
|
const-string v1,"Format10t with a label"
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format10t with an offset
|
||||||
|
goto 3
|
||||||
|
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
const-string v1,"Format10t with an offset"
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format20t with a label
|
||||||
|
goto/16 SKIP2:
|
||||||
|
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
SKIP2:
|
||||||
|
const-string v1,"Format20t with a label"
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format30t with a label
|
||||||
|
goto/32 SKIP3:
|
||||||
|
|
||||||
|
const-string v1, "This shouldn't be displayed!"
|
||||||
|
|
||||||
|
SKIP3:
|
||||||
|
const-string v1,"Format30t with a label"
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format22x and format32x
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/largeRegisterTest()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format21t
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat21t()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format21s
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat21s()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test format21h
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat21h()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format21h
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat21h-wide()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format23x
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat23x()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
;test format22b
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat22b()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format22c-type
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat22cType()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format22t
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat22t()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format22s
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat22s()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format31i
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat31i()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format31c
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat31c()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test format51l
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testFormat51l()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
;test array-fill-data
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testArrayFillData()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
;test packed-switch
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testPackedSwitch()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
;test sparse-switch
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testSparseSwitch()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;test try-catch block
|
||||||
|
invoke-virtual {v4}, org/JesusFreke/HelloWorld2/HelloWorld2/testTry()Ljava/lang/String;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v2, v1}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
invoke-virtual {v2, v3}, java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
||||||
|
move-result-object v2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
check-cast v4, Landroid/app/Activity;
|
||||||
|
|
||||||
|
invoke-virtual {v0,v2}, android/widget/TextView/setText(Ljava/lang/CharSequence;)V
|
||||||
|
|
||||||
|
|
||||||
|
new-instance v1, Landroid/widget/ScrollView;
|
||||||
|
invoke-direct {v1,v4}, android/widget/ScrollView/<init>(Landroid/content/Context;)V
|
||||||
|
|
||||||
|
invoke-virtual {v1, v0}, android/widget/ScrollView/addView(Landroid/view/View;)V
|
||||||
|
|
||||||
|
|
||||||
|
invoke-virtual {v4,v1}, org/JesusFreke/HelloWorld2/HelloWorld2/setContentView(Landroid/view/View;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
39
examples/Identifiers.smali
Normal file
39
examples/Identifiers.smali
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
.class public org/JesusFreke/HelloWorld2/HelloWorld2
|
||||||
|
.super android/app/Activity
|
||||||
|
|
||||||
|
.field private static final final Ljava/lang/String;
|
||||||
|
.field private static final static I
|
||||||
|
.field private static final 1234 I
|
||||||
|
.field private static final 1234-5678 I
|
||||||
|
.field private static final 1E1000 I
|
||||||
|
.field private static final 1E-1000 I
|
||||||
|
.field private static final return I
|
||||||
|
.field private static final new-instance I
|
||||||
|
.field private static final <test> I
|
||||||
|
.field private static final <test$abcd> I
|
||||||
|
.field private static final test$abcd I
|
||||||
|
|
||||||
|
|
||||||
|
.method public constructor <init>()V
|
||||||
|
.registers 1
|
||||||
|
invoke-direct {v0} android/app/Activity.<init>()V
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public 1E-2000(Landroid/os/Bundle;)V
|
||||||
|
.registers 4
|
||||||
|
|
||||||
|
sget-object v0 java/lang/System.out Ljava/io/PrintStream;
|
||||||
|
|
||||||
|
invoke-super {v2,v3} android/app/Activity.onCreate(Landroid/os/Bundle;)V
|
||||||
|
|
||||||
|
new-instance v0 android/widget/TextView
|
||||||
|
invoke-direct {v0,v2} android/widget/TextView.<init>(Landroid/content/Context;)V
|
||||||
|
const-string v1 "Hello World!"
|
||||||
|
invoke-virtual {v0,v1} android/widget/TextView.setText(Ljava/lang/CharSequence;)V
|
||||||
|
invoke-virtual {v2,v0} org/JesusFreke/HelloWorld2/HelloWorld2.setContentView(Landroid/view/View;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
28
examples/NoFields.smali
Normal file
28
examples/NoFields.smali
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
.class public org/JesusFreke/HelloWorld2/HelloWorld2
|
||||||
|
.super android/app/Activity
|
||||||
|
|
||||||
|
.method public constructor <init>()V
|
||||||
|
.registers 1
|
||||||
|
invoke-direct {v1} android/app/Activity.<init>()V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.method public onCreate(Landroid/os/Bundle;)V
|
||||||
|
.registers 5
|
||||||
|
|
||||||
|
invoke-super {v3,v4} android/app/Activity.onCreate(Landroid/os/Bundle;)V
|
||||||
|
|
||||||
|
const-string v1 "Hello World!"
|
||||||
|
|
||||||
|
new-instance v0 android/widget/TextView
|
||||||
|
invoke-direct {v0,v3} android/widget/TextView.<init>(Landroid/content/Context;)V
|
||||||
|
|
||||||
|
|
||||||
|
invoke-virtual {v0,v1} android/widget/TextView.setText(Ljava/lang/CharSequence;)V
|
||||||
|
invoke-virtual {v3,v0} org/JesusFreke/HelloWorld2/HelloWorld2.setContentView(Landroid/view/View;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
|
24
examples/RecursiveAnnotation/Main.smali
Normal file
24
examples/RecursiveAnnotation/Main.smali
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
.class public LMain;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
|
||||||
|
;expected output (using the dalvik's default stack size)
|
||||||
|
;@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=@RecursiveAnnotation(value=java.lang.StackOverflowError))))))))))))))))))))))))))))))
|
||||||
|
|
||||||
|
.method public static main([Ljava/lang/String;)V
|
||||||
|
.registers 3
|
||||||
|
|
||||||
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
||||||
|
|
||||||
|
const-class v1, LMain;
|
||||||
|
const-class v2, LRecursiveAnnotation;
|
||||||
|
|
||||||
|
invoke-virtual {v1, v2}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
|
||||||
|
move-result-object v1
|
||||||
|
|
||||||
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
||||||
|
|
||||||
|
return-void
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.annotation runtime LRecursiveAnnotation;
|
||||||
|
.end annotation
|
18
examples/RecursiveAnnotation/RecursiveAnnotation.smali
Normal file
18
examples/RecursiveAnnotation/RecursiveAnnotation.smali
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.class public abstract interface annotation LRecursiveAnnotation;
|
||||||
|
.super Ljava/lang/Object;
|
||||||
|
.implements Ljava/lang/annotation/Annotation;
|
||||||
|
|
||||||
|
;this is a recursive annotation that has a default value of itself.
|
||||||
|
;Trying to print .toString() on an instance of this annotation
|
||||||
|
;will cause a stack overflow
|
||||||
|
|
||||||
|
.method public abstract value()LRecursiveAnnotation;
|
||||||
|
.end method
|
||||||
|
|
||||||
|
.annotation system Ldalvik/annotation/AnnotationDefault;
|
||||||
|
value = .subannotation LRecursiveAnnotation;
|
||||||
|
value = .subannotation LRecursiveAnnotation;
|
||||||
|
.end subannotation
|
||||||
|
.end subannotation
|
||||||
|
.end annotation
|
||||||
|
|
Reference in New Issue
Block a user