Skip to content

Instantly share code, notes, and snippets.

@karthikraobr
Last active January 23, 2018 15:32
Show Gist options
  • Save karthikraobr/8f6bac98d31e4abe64f8eeb7ed3bf13c to your computer and use it in GitHub Desktop.
Save karthikraobr/8f6bac98d31e4abe64f8eeb7ed3bf13c to your computer and use it in GitHub Desktop.
Jimple:IfStmt Inversion
public static void main(String[] args) {
int secret = getRandomInt();
System.out.println(secret);
if (secret > 0) {
System.out.println("Hello");
} else if (secret > 50) {
System.out.println("World");
} else {
System.out.println("Hello World");
}
if (secret < 100 && secret > 50) {
System.out.println("Hello Soot");
}
}
-----------------Jimple----------------
public static void main(java.lang.String[])
{
java.lang.String[] args;
int secret;
java.io.PrintStream $r0, $r1, $r2, $r3, $r4;
args := @parameter0: java.lang.String[];
secret = staticinvoke <ifStmt.test: int getRandomInt()>();
$r0 = <java.lang.System: java.io.PrintStream out>;
virtualinvoke $r0.<java.io.PrintStream: void println(int)>(secret);
//if (secret > 0)
if secret <= 0 goto label1;
$r4 = <java.lang.System: java.io.PrintStream out>;
virtualinvoke $r4.<java.io.PrintStream: void println(java.lang.String)>("Hello");
goto label3;
label1:
//else if (secret > 50)
if secret <= 50 goto label2;
$r3 = <java.lang.System: java.io.PrintStream out>;
virtualinvoke $r3.<java.io.PrintStream: void println(java.lang.String)>("World");
goto label3;
label2:
$r1 = <java.lang.System: java.io.PrintStream out>;
virtualinvoke $r1.<java.io.PrintStream: void println(java.lang.String)>("Hello World");
label3:
//if (secret < 100 && secret > 50)
if secret >= 100 goto label4;
if secret <= 50 goto label4;
$r2 = <java.lang.System: java.io.PrintStream out>;
virtualinvoke $r2.<java.io.PrintStream: void println(java.lang.String)>("Hello Soot");
label4:
return;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment