diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2025-08-04 19:53:58 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2025-08-04 19:53:58 (GMT) |
commit | 1c7c6cdeae20e824ad8447daec4dc12b3b286def (patch) | |
tree | 41e2a3e9e4fa5b10306bae6d565f0f2db5980982 /valid |
Initial version.
Diffstat (limited to 'valid')
-rw-r--r-- | valid/code-0000.smali | 58 | ||||
-rw-r--r-- | valid/code-0001.smali | 74 | ||||
-rw-r--r-- | valid/code-0002.smali | 107 | ||||
-rw-r--r-- | valid/code-0003.smali | 60 | ||||
-rw-r--r-- | valid/code-0004.smali | 38 | ||||
-rw-r--r-- | valid/code-0005.smali | 52 | ||||
-rw-r--r-- | valid/code-0006.smali | 60 | ||||
-rw-r--r-- | valid/code-0007.smali | 80 | ||||
-rw-r--r-- | valid/code-0008.smali | 58 | ||||
-rw-r--r-- | valid/code-0009.smali | 73 | ||||
-rw-r--r-- | valid/code-0010.smali | 35 | ||||
-rw-r--r-- | valid/code-0011.smali | 82 | ||||
-rw-r--r-- | valid/code-0012.smali | 105 | ||||
-rw-r--r-- | valid/code-0013.smali | 98 | ||||
-rw-r--r-- | valid/code-0014.smali | 82 | ||||
-rw-r--r-- | valid/code-0015.smali | 70 | ||||
-rw-r--r-- | valid/code-0016.smali | 83 | ||||
-rw-r--r-- | valid/code-0017.smali | 63 | ||||
-rw-r--r-- | valid/code-0018.smali | 140 | ||||
-rw-r--r-- | valid/code-0019.smali | 65 | ||||
-rw-r--r-- | valid/code-0020.smali | 108 |
21 files changed, 1591 insertions, 0 deletions
diff --git a/valid/code-0000.smali b/valid/code-0000.smali new file mode 100644 index 0000000..6601296 --- /dev/null +++ b/valid/code-0000.smali @@ -0,0 +1,58 @@ + +.class public LBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public static dataHandling()V + .locals 4 + const/16 v0, 0x1234 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + new-instance v2, Ljava/lang/StringBuilder; + invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V + const-string v3, "Data handling: " + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.method public static arithmeticOperations()V + .locals 3 + const/4 v0, 0x7 + const/16 v1, 0xA + add-int/lit8 v2, v0, 0x3 + sub-int v3, v1, v2 + mul-int/lit8 v0, v2, 0x2 + div-int v1, v3, v0 + rem-int v2, v1, v0 + const/16 v0, 0x15 + and-int v1, v2, v0 + or-int v2, v1, v0 + xor-int v1, v2, v0 + shl-int v2, v1, v0 + shr-int v1, v2, v0 + neg-int v2, v1 + return-void +.end method + +.method public static controlFlowOperations()V + .locals 3 + const/4 v0, 0x5 + if-eqz v0, :cond_true + goto :cond_false +:cond_true + const-string v1, "Condition is true" + goto :end_if +:cond_false + const-string v1, "Condition is false" +:end_if + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method diff --git a/valid/code-0001.smali b/valid/code-0001.smali new file mode 100644 index 0000000..3c2a375 --- /dev/null +++ b/valid/code-0001.smali @@ -0,0 +1,74 @@ + +.class public LBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public static dataHandling()V + .locals 3 + + const/4 v0, 0x1 + const/4 v1, 0x2 + + add-int/lit8 v2, v0, 0x3 + sub-int v2, v2, v1 + mul-int/lit8 v2, v2, 0x2 + div-int v2, v2, v0 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Data Handling: " + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V + + iput v2, p0, LBytecodeDemo;->result:I + return-void +.end method + +.method public static arithmeticLogic()V + .locals 3 + + const/4 v0, 0x5 + const/4 v1, 0x3 + + add-int v2, v0, v1 + sub-int v2, v2, v1 + mul-int/lit8 v2, v2, 0x2 + div-int v2, v2, v0 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Arithmetic and Logic Operations: " + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V + + iput v2, p0, LBytecodeDemo;->result:I + return-void +.end method + +.method public static controlFlow()V + .locals 3 + + const/4 v0, 0x1 + const/4 v1, 0x5 + + if-eq v0, v1, :cond_true + goto :cond_false + +:cond_true + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Control Flow True" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void + +:cond_false + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Control Flow False" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method diff --git a/valid/code-0002.smali b/valid/code-0002.smali new file mode 100644 index 0000000..592c3ce --- /dev/null +++ b/valid/code-0002.smali @@ -0,0 +1,107 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method static public main([Ljava/lang/String;)V + .locals 4 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Hello, Dalvik!" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + new-instance v2, Ljava/util/ArrayList; + invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V + sput-object v2, LSmaliDemo;->list:Ljava/util/ArrayList; + + const/4 v3, 0x1 + invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(I)V + + return-void +.end method + +.method public test_data_handling()V + .locals 5 + + new-instance v0, LSmaliDemo; + invoke-direct {v0}, LSmaliDemo;-><init>()V + + const/16 v1, 0x10 + iput v1, v0, LSmaliDemo;->dataField:I + + iget v2, v0, LSmaliDemo;->dataField:I + add-int/lit8 v3, v2, 0x2 + iput v3, v0, LSmaliDemo;->dataField:I + + return-void +.end method + +.method public test_arithmetic_logic_operations()V + .locals 4 + + new-instance v0, LSmaliDemo; + invoke-direct {v0}, LSmaliDemo;-><init>()V + + const/4 v1, 0x5 + const/4 v2, 0x3 + invoke-static {v1, v2}, Ljava/lang/Math;->max(II)I + move-result v3 + iput v3, v0, LSmaliDemo;->resultField:I + + return-void +.end method + +.method public test_control_flow_operations()V + .locals 3 + + new-instance v0, LSmaliDemo; + invoke-direct {v0}, LSmaliDemo;-><init>()V + + const/4 v1, 0x1 + if-eqz v1, :cond_true + goto :cond_false + + :cond_true + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v3, "Condition is true" + invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + goto :end_if + + :cond_false + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v3, "Condition is false" + invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :end_if + return-void +.end method + +.method public test_high_dex_instructions()V + .locals 4 + + new-instance v0, LSmaliDemo; + invoke-direct {v0}, LSmaliDemo;-><init>()V + + const-string v1, "Hello" + invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String; + move-result-object v2 + iput-object v2, v0, LSmaliDemo;->stringField:Ljava/lang/String; + + const/4 v3, 0x3 + if-eqz v3, :cond_true_2 + goto :cond_false_2 + + :cond_true_2 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v2, "True branch" + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + goto :end_if_2 + + :cond_false_2 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v2, "False branch" + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :end_if_2 + return-void +.end method diff --git a/valid/code-0003.smali b/valid/code-0003.smali new file mode 100644 index 0000000..19b8c43 --- /dev/null +++ b/valid/code-0003.smali @@ -0,0 +1,60 @@ + +.class public LBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + # Constructor + return-void +.end method + +# Data handling +.method public static handleData(I[I)I + .locals 4 + + iget-object v0, p0, LBytecodeDemo;->data:I + iput-object v1, p0, LBytecodeDemo;->data:I + + return-void +.end method + +# Arithmetic and logic operations +.method public static arithLogic(I)V + .locals 4 + + const/4 v0, 0x5 + add-int/lit8 v1, v0, 0x3 + sub-int v2, v1, p1 + mul-int v3, v2, p1 + div-int v0, v3, p1 + + return-void +.end method + +# Control flow operations +.method public static controlFlow(I)V + .locals 3 + + if-eqz p1, :cond_true + + const/4 v0, 0x1 + goto :end_if + +:cond_true + const/4 v0, 0x0 + +:end_if + return-void +.end method + +# Specific instructions for highest Dex files versions (038 or 039) +.method public static specificInstructions(I)V + .locals 5 + + 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 diff --git a/valid/code-0004.smali b/valid/code-0004.smali new file mode 100644 index 0000000..5cad6c6 --- /dev/null +++ b/valid/code-0004.smali @@ -0,0 +1,38 @@ + +.class public LExample; +.super Ljava/lang/Object; + +.method static constructor <init>()V + .locals 0 + + return-void +.end method + +.method public test_data_handling()V + .locals 4 + + const/16 v0, 0x1234 + sput-object v0, LExample;->data:Ljava/lang/Object; + + new-instance v0, Ljava/lang/String; + iput-object v0, p0, LExample;->stringData:Ljava/lang/String; + + return-void +.end method + +.method public test_control_flow()V + .locals 2 + + const/16 v0, 0x5 + const/16 v1, 0x8 + + if-gt v0, v1, :cond_true + + goto :end_if + +:cond_true + return-void + +:end_if + return-void +.end method diff --git a/valid/code-0005.smali b/valid/code-0005.smali new file mode 100644 index 0000000..f9b2481 --- /dev/null +++ b/valid/code-0005.smali @@ -0,0 +1,52 @@ + +.class public LMyDalvikDemo; +.super Ljava/lang/Object; + +.method public static main([Ljava/lang/String;)V + .locals 5 + + # Data handling + const/16 v0, 0x1234 + sput-object v0, LMyDalvikDemo;->myStaticField:I + + # Arithmetic and logic operations + const/16 v1, 0x5678 + add-int/lit16 v2, v1, 0x9ABC + mul-int v3, v2, v1 + neg-int v4, v3 + + # Control flow operations + if-nez v4, :cond_true + goto :cond_false + +:cond_true + const-string v4, "Condition is true" + goto :print_result + +:cond_false + const-string v4, "Condition is false" + +:print_result + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v0, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method public static getStaticField()I + .locals 1 + + sget-object v0, LMyDalvikDemo;->myStaticField:I + return v0 +.end method + +.method private myPrivateMethod(I)V + .locals 1 + + add-int/lit8 v0, p1, 0x10 + iput v0, p0, LMyDalvikDemo;->myInstanceField:I + return-void +.end method + +.field public static myStaticField:I +.field private myInstanceField:I diff --git a/valid/code-0006.smali b/valid/code-0006.smali new file mode 100644 index 0000000..1b836b6 --- /dev/null +++ b/valid/code-0006.smali @@ -0,0 +1,60 @@ + +.class public LdalvikBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public static testDataHandling()V + .locals 3 + + const/4 v0, 0x1 + add-int/lit8 v0, v0, 0x1 + sub-int v1, v0, v1 + mul-int v2, v0, v1 + div-int v3, v2, v1 + rem-int v4, v2, v1 + return-void +.end method + +.method public static testArithmeticLogicOperations()V + .locals 5 + + const/4 v0, 0x1 + or-int v1, v0, v0 + xor-int v2, v0, v0 + shl-int v3, v0, v0 + shr-int v4, v0, v0 + return-void +.end method + +.method public static testControlFlowOperations()V + .locals 2 + + const/4 v0, 0x1 + if-eqz v0, :cond_true + goto :cond_false +:cond_true + const-string v0, "True" + return-void +:cond_false + const-string v1, "False" + return-void +.end method + +.method public static testSpecificInstructions()V + .locals 3 + + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V + const/4 v1, 0x1 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + const-string v2, "Hello" + invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + return-void +.end method diff --git a/valid/code-0007.smali b/valid/code-0007.smali new file mode 100644 index 0000000..ea37054 --- /dev/null +++ b/valid/code-0007.smali @@ -0,0 +1,80 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + return-void +.end method + +.method public static dataHandlingExample()V + .locals 4 + + const/16 v0, 0x1234 + const/16 v1, 0x5678 + const/16 v2, 0x9ABC + const/16 v3, 0xDEF0 + + sput-object v0, LSmaliDemo;->dataField:I + + return-void +.end method + +.method public static arithmeticAndLogicOperationsExample()V + .locals 4 + + const/4 v0, 5 + const/4 v1, 3 + + add-int v2, v0, v1 + sub-int v3, v0, v1 + mul-int v0, v2, v3 + div-int v1, v0, v2 + + return-void +.end method + +.method public static controlFlowExample()V + .locals 1 + + const/4 v0, 0 + + if-eqz v0, :cond_0 + goto :cond_1 + +:cond_0 + const/4 v0, 1 + goto :cond_2 + +:cond_1 + const/4 v0, 2 + goto :cond_2 + +:cond_2 + return-void +.end method + +.method public static highestDexVersionExample()V + .locals 3 + + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V + + const/16 v1, 0x1234 + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + + const-string v1, "Hello" + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v1 + + sput-object v1, LSmaliDemo;->stringField:Ljava/lang/String; + + return-void +.end method + +.field private static dataField:I + +.field private static stringField:Ljava/lang/String; diff --git a/valid/code-0008.smali b/valid/code-0008.smali new file mode 100644 index 0000000..061cd0a --- /dev/null +++ b/valid/code-0008.smali @@ -0,0 +1,58 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + return-void +.end method + +.method public static main([Ljava/lang/String;)V + .locals 12 + + const/4 v0, 0x5 + sget-object v1, Ljava/io/System;->out:Ljava/io/PrintStream; + + const-string v2, "Hello" + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + const-string v3, "World" + invoke-virtual {v1, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + sget-object v4, LSmaliDemo;->instance:Ljava/lang/Object; + + new-instance v5, Ljava/lang/StringBuilder; + const-string v6, "Sum: " + invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + + const/16 v7, 0x2A + iput v7, v5, Ljava/lang/StringBuilder;->value:Ljava/lang/Object; + + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v8 + + invoke-virtual {v1, v8}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + const/4 v9, 0x7 + const/4 v10, 0x3 + + add-int v11, v9, v10 + + new-instance v12, Ljava/lang/StringBuilder; + const-string v13, "Result: " + invoke-direct {v12, v13}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V + + iput v11, v12, Ljava/lang/StringBuilder;->value:Ljava/lang/Object; + + invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v14 + + invoke-virtual {v1, v14}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.field static instance:Ljava/lang/Object; + +.field public static final serialVersionUID:I = 0x0 diff --git a/valid/code-0009.smali b/valid/code-0009.smali new file mode 100644 index 0000000..0648e34 --- /dev/null +++ b/valid/code-0009.smali @@ -0,0 +1,73 @@ + +.class public LdalvikBytecodeDemo; + +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public dataHandling()V + .locals 2 + + const/16 v0, 0x1234 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V + + return-void +.end method + +.method public arithmeticLogic()V + .locals 3 + + const/16 v0, 0x1234 + const/16 v1, 0x5678 + add-int v0, v0, v1 + mul-int v0, v0, v1 + xor-int v0, v0, v1 + div-int v0, v0, v1 + + return-void +.end method + +.method public controlFlow()V + .locals 1 + + const/16 v0, 0x1234 + if-eqz v0, :cond_true + + goto :cond_false + +:cond_true + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Condition true" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void + +:cond_false + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Condition false" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.method public highestDexInstructions()V + .locals 4 + + const/16 v0, 0x1234 + const/16 v1, 0x5678 + add-int v0, v0, v1 + mul-int v0, v0, v1 + xor-int v0, v0, v1 + div-int v0, v0, v1 + + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v2, "Result: " + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V + + return-void +.end method diff --git a/valid/code-0010.smali b/valid/code-0010.smali new file mode 100644 index 0000000..7517f87 --- /dev/null +++ b/valid/code-0010.smali @@ -0,0 +1,35 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method public static main([Ljava/lang/String;)V + .locals 7 + + # Data handling + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Hello, Smali!" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + # Arithmetic and logic operations + const v2, 5 + const v3, 3 + add-int/lit8 v4, v2, 2 + mul-int v5, v2, v3 + rem-int v6, v4, v5 + + # Control flow operations + if-eqz v6, :cond_true + goto :cond_false + +:cond_true + const-string v7, "Result is zero" + goto :print_result + +:cond_false + const-string v7, "Result is not zero" + +:print_result + invoke-virtual {v0, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method diff --git a/valid/code-0011.smali b/valid/code-0011.smali new file mode 100644 index 0000000..ac50a33 --- /dev/null +++ b/valid/code-0011.smali @@ -0,0 +1,82 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + return-void +.end method + +.method public static main([Ljava/lang/String;)V + .locals 4 + + 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 + + new-instance v2, LSmaliDemo; + invoke-direct {v2}, LSmaliDemo;-><init>()V + + iget-object v3, v2, LSmaliDemo;->data:Ljava/util/List; + + const/4 v4, 0x1 + aget-object v3, v3, v4 + invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String; + move-result-object v3 + + invoke-virtual {v0, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method public static loadData()Ljava/util/List; + .locals 1 + + new-instance v0, Ljava/util/ArrayList; + invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V + + const-string v1, "Data" + invoke-virtual {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z + return-object v0 +.end method + +.method public static performArithmetic()V + .locals 2 + + const/4 v0, 0x5 + add-int/lit8 v0, v0, 0x2 + mul-int/lit8 v1, v0, 0x4 + return-void +.end method + +.method public static controlFlowDemo()V + .locals 1 + + const/16 v0, 0xa + const/4 v1, 0x5 + + if-gt v0, v1, :if_1 + + return-void + + :if_1 + new-instance v0, LSmaliDemo; + invoke-direct {v0}, LSmaliDemo;-><init>()V + return-object v0 +.end method + +.method public static highVersionInstructions()V + .locals 2 + + const/4 v0, 0x1 + add-int/lit8 v0, v0, 0x2 + + const-wide/16 v1, 0x1000 + shr-long v1, v1, v0 + + invoke-static {}, LSmaliDemo;->loadData()Ljava/util/List; + + return-void +.end method diff --git a/valid/code-0012.smali b/valid/code-0012.smali new file mode 100644 index 0000000..a0f18ec --- /dev/null +++ b/valid/code-0012.smali @@ -0,0 +1,105 @@ + +.class public LDalvikDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 1 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Hello from Dalvik!" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.method public dataHandling()V + .locals 3 + + const/16 v0, 0x10 + sput-object v0, LDalvikDemo;->dataField:Ljava/lang/Object; + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + sget-object v1, LDalvikDemo;->dataField:Ljava/lang/Object; + check-cast v1, Ljava/lang/String; + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + const-string v0, "Hello" + sput-object v0, LDalvikDemo;->dataField:Ljava/lang/Object; + + sget-object v0, LDalvikDemo;->dataField:Ljava/lang/Object; + check-cast v0, Ljava/lang/String; + invoke-virtual {v0}, Ljava/lang/String;->length()I + move-result v1 + + const/4 v2, 0x5 + if-lt v1, v2, :if_0 + return-void + + :if_0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Data is less than expected" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.method public arithmeticOperations()V + .locals 3 + + sget-object v0, LDalvikDemo;->numField:I + const/4 v1, 0x2 + add-int v0, v0, v1 + move-result v0 + + sput v0, LDalvikDemo;->numField:I + + sget v0, LDalvikDemo;->numField:I + const/4 v1, 0x3 + mul-int/lit8 v0, v0, 0x5 + move-result v0 + + sput v0, LDalvikDemo;->numField:I + + return-void +.end method + +.method public controlFlowOperations()V + .locals 2 + + sget v0, LDalvikDemo;->controlField:I + const/4 v1, 0x1 + if-eqz v0, :if_0 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Control flow is working" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void + + :if_0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Control flow failed" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.method public highestDexVersion()V + .locals 2 + + sget v0, LDalvikDemo;->highestField:I + const/4 v1, 0x5 + if-lt v0, v1, :if_0 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Highest Dex version is reached" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void + + :if_0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Highest Dex version is not reached" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + return-void +.end method + +.field private dataField:Ljava/lang/Object; +.field private numField:I +.field private controlField:I +.field private highestField:I diff --git a/valid/code-0013.smali b/valid/code-0013.smali new file mode 100644 index 0000000..07297d9 --- /dev/null +++ b/valid/code-0013.smali @@ -0,0 +1,98 @@ + +.class public Lcom/example/BytecodeDemo; + +.super Ljava/lang/Object; + +# direct methods +.method constructor()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +# static methods +.method public static int_add(I I)I + .locals 1 + + add-int v0, p0, p1 + return v0 +.end method + +.method public static int_sub(I I)I + .locals 1 + + sub-int v0, p0, p1 + return v0 +.end method + +.method public static int_mul(I I)I + .locals 1 + + mul-int v0, p0, p1 + return v0 +.end method + +.method public static int_div(I I)I + .locals 1 + + div-int v0, p0, p1 + return v0 +.end method + +.method public static int_rem(I I)I + .locals 1 + + rem-int v0, p0, p1 + return v0 +.end method + +.method public static if_true(I)Z + .locals 1 + + add-int/lit8 v0, p0, 1 + return v0 +.end method + +.method public static if_false(I)Z + .locals 1 + + and-int/lit8 v0, p0, 2 + return v0 +.end method + +.method public static if_greater(I)Z + .locals 1 + + add-int/lit8 v0, p0, 3 + return v0 +.end method + +.method public static if_ge(I)Z + .locals 1 + + and-int/lit8 v0, p0, 4 + return v0 +.end method + +.method public static if_lesser(I)Z + .locals 1 + + add-int/lit8 v0, p0, 5 + return v0 +.end method + +.method public static if_le(I)Z + .locals 1 + + and-int/lit8 v0, p0, 6 + return v0 +.end method + +.method public static print_string(Ljava/lang/String;)V + .locals 2 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v0, p0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + return-void +.end method diff --git a/valid/code-0014.smali b/valid/code-0014.smali new file mode 100644 index 0000000..cb98fa6 --- /dev/null +++ b/valid/code-0014.smali @@ -0,0 +1,82 @@ + +.class public LBytecodeDemo; +.super Ljava/lang/Object; + +.method public static main([Ljava/lang/String;)V + .locals 4 + + const/16 v0, 0x1 + invoke-static {v0}, LBytecodeDemo;->add(I)V + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Data handling test passed" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method private static add(I)V + .locals 2 + + move-result-object p0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Data handling test passed" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method public static dataHandlingTest()V + .locals 3 + + const/4 v0, 0x0 + array-length v1, p0 + if-eqz v1, :cond_0 + move-result-object p0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Data handling test failed" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :cond_0 + return-void +.end method + +.method public static arithmeticAndLogicOperationsTest()V + .locals 4 + + const/16 v0, 0x10 + add-int/lit8 v1, v0, 0x3 + sub-int v2, v1, v0 + mul-int/lit8 v0, v2, 0x7 + div-int/lit8 v1, v0, 0x5 + + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v3, "Arithmetic and logic operations test passed" + invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method public static controlFlowOperationsTest()V + .locals 1 + + const/4 v0, 0x1 + if-eqz v0, :cond_0 + move-result-object p0 + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Control flow operations test failed" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :cond_0 + return-void +.end method + +.method public static specificInstructionsTest()V + .locals 2 + + const-string v0, "Hello, World!" + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method diff --git a/valid/code-0015.smali b/valid/code-0015.smali new file mode 100644 index 0000000..c1cf6bd --- /dev/null +++ b/valid/code-0015.smali @@ -0,0 +1,70 @@ + +.class public LBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + return-void +.end method + +.method public testDataHandling()V + .locals 3 + + const/16 v0, 0x1234 + const/16 v1, 0x5678 + add-int v0, v0, v1 + iput v0, p0, LBytecodeDemo;->field:I + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + iget v1, p0, LBytecodeDemo;->field:I + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(I)V + + return-void +.end method + +.method public testArithmeticLogic()V + .locals 3 + + const/4 v0, 0x5 + const/4 v1, 0x3 + add-int/lit8 v2, v0, 0x2 + mul-int v0, v2, v1 + div-int v0, v0, v1 + rem-int v0, v0, v1 + neg-int v0, v0 + + return-void +.end method + +.method public testControlFlow()V + .locals 1 + + const/4 v0, 0x5 + + if-eqz v0, :cond_true + goto :cond_false + +:cond_true + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Condition is true" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + goto :end_if + +:cond_false + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Condition is false" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + +:end_if + return-void +.end method + +.method public testDex38Instructions()V + .locals 2 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + const-string v1, "Hello from Dex 38" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method diff --git a/valid/code-0016.smali b/valid/code-0016.smali new file mode 100644 index 0000000..6b2b66e --- /dev/null +++ b/valid/code-0016.smali @@ -0,0 +1,83 @@ + +.class public Lcom/example/BytecodeDemo; + +.super Ljava/lang/Object; + +.method public constructor <init>()V + .registers 1 + + # Data handling + 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 + +.method public static add(I I)I + .registers 2 + + # Arithmetic and logic operations + add-int v0, p0, p1 + return v0 +.end method + +.method public static multiply(I I)I + .registers 3 + + # Arithmetic and logic operations + mul-int v0, p0, p1 + return v0 +.end method + +.method public static compare(I I)Z + .registers 3 + + # Arithmetic and logic operations + cmp-long v0, p0, p1 + if-nez v0, :cond_0 + const/4 v0, 0x1 + return v0 + + :cond_0 + const/4 v0, 0x0 + return v0 +.end method + +.method public static loop(I)V + .registers 3 + + # Control flow operations + const/16 v0, 0x0 + :goto_0 + if-gez p0, :cond_0 + invoke-static {p0}, Lcom/example/BytecodeDemo;->add(I)I + move-result p0 + add-int/lit8 v0, v0, 1 + goto :goto_0 + + :cond_0 + return-void +.end method + +.method public static printArray([Ljava/lang/String;)V + .registers 3 + + # Control flow operations + const/4 v0, 0x0 + array-length v1, p0 + if-gez p0, :cond_0 + goto :goto_1 + + :loop_0 + aget-object v2, p0, v0 + sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + add-int/lit8 v0, v0, 1 + goto :loop_0 + + :cond_0 + return-void + + :goto_1 + return-void +.end method diff --git a/valid/code-0017.smali b/valid/code-0017.smali new file mode 100644 index 0000000..85e95af --- /dev/null +++ b/valid/code-0017.smali @@ -0,0 +1,63 @@ + +.class public LExample; +.super Ljava/lang/Object; + +.method private static handleData(I)I + .locals 3 + + # Data handling: const /16 v0, 0x1234 + const/16 v0, 0x1234 + + # Data handling: sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + + # Data handling: const-string v2, "Data handled value: " + const-string v2, "Data handled value: " + + # Data handling: invoke-virtual {v1, v2, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + invoke-virtual {v1, v2, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method private static arithmetic(I)V + .locals 3 + + # Arithmetic and logic operations: const /16 v0, 0x5678 + const/16 v0, 0x5678 + + # Arithmetic and logic operations: add-int/lit16 v1, v0, 0x1234 + add-int/lit16 v1, v0, 0x1234 + + # Arithmetic and logic operations: const-string v2, "Result of addition: " + const-string v2, "Result of addition: " + + # Arithmetic and logic operations: invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method private static controlFlow(I)V + .locals 3 + + # Control flow operations: const /16 v0, 0x9ABC + const/16 v0, 0x9ABC + + # Control flow operations: if-nez v0, :cond_true + if-nez v0, :cond_true + + goto :cond_false + + :cond_true + const-string v1, "Condition is true" + invoke-virtual {v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + goto :end + + :cond_false + const-string v1, "Condition is false" + invoke-virtual {v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :end + return-void +.end method diff --git a/valid/code-0018.smali b/valid/code-0018.smali new file mode 100644 index 0000000..d21b9a9 --- /dev/null +++ b/valid/code-0018.smali @@ -0,0 +1,140 @@ + +.class public LDalvikBytecodeDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 0 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public dataHandlingTest()V + .locals 4 + + const/16 v0, 0x1A + const/16 v1, 0x2B + add-int v2, v0, v1 + sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(I)V + return-void +.end method + +.method public arithmeticLogicTest()V + .locals 4 + + const/16 v0, 0x1A + const/16 v1, 0x2B + sub-int v2, v0, v1 + neg-int v3, v2 + mul-int/lit8 v0, v3, 0x5 + div-int/lit8 v1, v0, 0x7 + rem-int/lit8 v2, v1, 0x3 + and-int v0, v2, v1 + or-int v1, v0, v2 + xor-int v0, v1, v2 + return-void +.end method + +.method public controlFlowTest()V + .locals 2 + + const/16 v0, 0x1A + if-eqz v0, :cond_1 + goto :label_0 + + :cond_1 + add-int/lit8 v0, v0, 0x5 + :label_0 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V + return-void +.end method + +.method public specificInstructionsTest()V + .locals 5 + + const-wide v0, 0x12345678L + const-wide v1, 0x9ABCDEF0L + add-long v2, v0, v1 + sub-long v3, v0, v1 + neg-long v0, v2 + mul-long/lit16 v1, v3, 0x1234 + div-long/lit16 v2, v1, 0x5678 + rem-long/lit16 v3, v2, 0x9ABC + const-wide/16 v0, 0xDEF0L + shr-long/lit8 v1, v0, 0x3 + shl-long/lit8 v0, v1, 0x7 + return-void +.end method + +.method public stringOperationsTest()V + .locals 4 + + const-string v0, "Hello" + const-string v1, ", World!" + invoke-static {v0, v1}, Ljava/lang/String;->concat(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + move-result-object v2 + sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + return-void +.end method + +.method public arrayOperationsTest()V + .locals 5 + + new-array v0, 5, [I + const/16 v1, 0x1A + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(I)V + aget-object v1, v0, 0 + const/4 v2, 0x2B + aput v2, v0, 1 + anewarray I, 3 + move-result-object v2 + const/16 v3, 0x3C + sget-object v4, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v4, v3}, Ljava/io/PrintStream;->println(I)V + aput v3, v2, 0 + return-void +.end method + +.method public objectOperationsTest()V + .locals 5 + + new-instance v0, Ljava/lang/StringBuilder; + invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V + const-string v1, "Hello" + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + const-string v1, ", World!" + invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; + move-result-object v1 + sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + return-void +.end method + +.method public exceptionHandlingTest()V + .locals 3 + + try { + const/16 v0, 0x1A + if-eqz v0, :cond_2 + goto :label_1 + + :cond_2 + const-string v0, "Divide by zero error" + throw-verification-error v0 + + :label_1 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V + } catch Ljava/lang/ArithmeticException; {:cond_2} { + :catchall_3 + move-exception v0 + sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream; + invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + } + return-void +.end method diff --git a/valid/code-0019.smali b/valid/code-0019.smali new file mode 100644 index 0000000..9c0d8e7 --- /dev/null +++ b/valid/code-0019.smali @@ -0,0 +1,65 @@ + +.class public LSmaliDemo; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 1 + + invoke-direct {p0}, Ljava/lang/Object;-><init>()V + return-void +.end method + +.method public static dataHandling()V + .locals 4 + const/16 v0, 0x1234 + sget-object v1, Ljava/lang/System.out;->out:Ljava/io/PrintStream; + new-instance v2, Ljava/lang/StringBuilder; + invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V + const-string v3, "Data handling example: " + invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; + invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + return-void +.end method + +.method public static arithmeticLogicOperations()V + .locals 5 + const/4 v0, 0x78 + const/16 v1, 0x9ABC + add-int/lit16 v2, v0, v1 + sub-int/lit16 v3, v1, v0 + mul-int/lit8 v4, v0, 0x5 + div-int/lit16 v0, v2, v3 + rem-int/lit16 v1, v2, v3 + return-void +.end method + +.method public static controlFlowOperations()V + .locals 2 + const/4 v0, 0x1 + if-eqz v0, :cond_true + goto :end_if + + :cond_true + sget-object v0, Ljava/lang/System.out;->out:Ljava/io/PrintStream; + const-string v1, "Control flow example: True" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + + :end_if + return-void +.end method + +.method public static specificInstructions()V + .locals 2 + const/4 v0, 0x1 + if-eqz v0, :cond_true + goto :end_if + + :cond_true + sget-object v0, Ljava/lang/System.out;->out:Ljava/io/PrintStream; + const-string v1, "Specific instructions example: True" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + + :end_if + return-void +.end method diff --git a/valid/code-0020.smali b/valid/code-0020.smali new file mode 100644 index 0000000..24d6118 --- /dev/null +++ b/valid/code-0020.smali @@ -0,0 +1,108 @@ + +.class public LMyDalvikCode; +.super Ljava/lang/Object; + +.method public constructor <init>()V + .locals 1 + + const/4 v0, 0x0 + invoke-direct {p0, v0}, Ljava/lang/Object;-><init>()V + + return-void +.end method + +.method public test_data_handling()V + .locals 2 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "Data handling test" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + return-void +.end method + +.method public test_arithmetic_logic_operations()V + .locals 3 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const/4 v1, 0x10 + const/4 v2, 0x5 + + add-int/lit8 v1, v1, 0x1 + sub-int/lit8 v2, v2, 0x1 + + mul-int/lit8 v1, v1, 0x2 + div-int/lit8 v2, v2, 0x2 + + rem-int/lit8 v1, v1, 0x3 + neg-int v2, v2 + + const-string v3, "Arithmetic logic operations: " + invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V + + move-object v3, v0 + + invoke-virtual {v3, v1}, Ljava/io/PrintStream;->println(I)V + invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(I)V + + return-void +.end method + +.method public test_control_flow_operations()V + .locals 4 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const/4 v1, 0x5 + const/4 v2, 0x3 + + if-nez v1, :cond_true + goto :cond_false + + :cond_true + const-string v1, "Control flow: True" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + goto :end_if + + :cond_false + const-string v1, "Control flow: False" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + :end_if + + return-void +.end method + +.method public test_high_dex_version()V + .locals 3 + .registers 4 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + const-string v1, "High Dex version test" + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V + + const/4 v2, 0x10 + const/4 v3, 0x5 + + add-int/lit8 v2, v2, 0x1 + sub-int/lit8 v3, v3, 0x1 + + mul-int/lit8 v2, v2, 0x2 + div-int/lit8 v3, v3, 0x2 + + rem-int/lit8 v2, v2, 0x3 + neg-int v3, v3 + + const-string v1, "Result: " + invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V + + move-object v1, v0 + + invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(I)V + invoke-virtual {v1, v3}, Ljava/io/PrintStream;->println(I)V + + return-void +.end method |