use of com.googlecode.dex2jar.ir.expr.Value in project dex2jar by pxb1988.
the class Dex2IrAdapter method visitStmt2R.
@Override
public void visitStmt2R(Op op, int a, int b) {
Local va = locals[a];
Local vb = locals[b];
Value to = null;
switch(op) {
case MOVE:
case MOVE_16:
case MOVE_FROM16:
case MOVE_OBJECT:
case MOVE_OBJECT_16:
case MOVE_OBJECT_FROM16:
case MOVE_WIDE:
case MOVE_WIDE_FROM16:
case MOVE_WIDE_16:
to = vb;
break;
case ARRAY_LENGTH:
to = nLength(vb);
break;
case ADD_DOUBLE_2ADDR:
to = nAdd(va, vb, "D");
break;
case ADD_FLOAT_2ADDR:
to = nAdd(va, vb, "F");
break;
case ADD_INT_2ADDR:
to = nAdd(va, vb, "I");
break;
case ADD_LONG_2ADDR:
to = nAdd(va, vb, "J");
break;
case SUB_DOUBLE_2ADDR:
to = nSub(va, vb, "D");
break;
case SUB_FLOAT_2ADDR:
to = nSub(va, vb, "F");
break;
case SUB_INT_2ADDR:
to = nSub(va, vb, "I");
break;
case SUB_LONG_2ADDR:
to = nSub(va, vb, "J");
break;
case MUL_DOUBLE_2ADDR:
to = nMul(va, vb, "D");
break;
case MUL_FLOAT_2ADDR:
to = nMul(va, vb, "F");
break;
case MUL_INT_2ADDR:
to = nMul(va, vb, "I");
break;
case MUL_LONG_2ADDR:
to = nMul(va, vb, "J");
break;
case DIV_DOUBLE_2ADDR:
to = nDiv(va, vb, "D");
break;
case DIV_FLOAT_2ADDR:
to = nDiv(va, vb, "F");
break;
case DIV_INT_2ADDR:
to = nDiv(va, vb, "I");
break;
case DIV_LONG_2ADDR:
to = nDiv(va, vb, "J");
break;
case REM_DOUBLE_2ADDR:
to = nRem(va, vb, "D");
break;
case REM_FLOAT_2ADDR:
to = nRem(va, vb, "F");
break;
case REM_INT_2ADDR:
to = nRem(va, vb, "I");
break;
case REM_LONG_2ADDR:
to = nRem(va, vb, "J");
break;
case AND_INT_2ADDR:
to = nAnd(va, vb, TypeClass.ZI.name);
break;
case AND_LONG_2ADDR:
to = nAnd(va, vb, "J");
break;
case OR_INT_2ADDR:
to = nOr(va, vb, TypeClass.ZI.name);
break;
case OR_LONG_2ADDR:
to = nOr(va, vb, "J");
break;
case XOR_INT_2ADDR:
to = nXor(va, vb, TypeClass.ZI.name);
break;
case XOR_LONG_2ADDR:
to = nXor(va, vb, "J");
break;
case SHL_INT_2ADDR:
to = nShl(va, vb, "I");
break;
case SHL_LONG_2ADDR:
to = nShl(va, vb, "J");
break;
case SHR_INT_2ADDR:
to = nShr(va, vb, "I");
break;
case SHR_LONG_2ADDR:
to = nShr(va, vb, "J");
break;
case USHR_INT_2ADDR:
to = nUshr(va, vb, "I");
break;
case USHR_LONG_2ADDR:
to = nUshr(va, vb, "J");
break;
case NOT_INT:
to = nNot(vb, "I");
break;
case NOT_LONG:
to = nNot(vb, "J");
break;
case NEG_DOUBLE:
to = nNeg(vb, "D");
break;
case NEG_FLOAT:
to = nNeg(vb, "F");
break;
case NEG_INT:
to = nNeg(vb, "I");
break;
case NEG_LONG:
to = nNeg(vb, "J");
break;
case INT_TO_BYTE:
to = nCast(vb, "I", "B");
break;
case INT_TO_CHAR:
to = nCast(vb, "I", "C");
break;
case INT_TO_DOUBLE:
to = nCast(vb, "I", "D");
break;
case INT_TO_FLOAT:
to = nCast(vb, "I", "F");
break;
case INT_TO_LONG:
to = nCast(vb, "I", "J");
break;
case INT_TO_SHORT:
to = nCast(vb, "I", "S");
break;
case FLOAT_TO_DOUBLE:
to = nCast(vb, "F", "D");
break;
case FLOAT_TO_INT:
to = nCast(vb, "F", "I");
break;
case FLOAT_TO_LONG:
to = nCast(vb, "F", "J");
break;
case DOUBLE_TO_FLOAT:
to = nCast(vb, "D", "F");
break;
case DOUBLE_TO_INT:
to = nCast(vb, "D", "I");
break;
case DOUBLE_TO_LONG:
to = nCast(vb, "D", "J");
break;
case LONG_TO_DOUBLE:
to = nCast(vb, "J", "D");
break;
case LONG_TO_FLOAT:
to = nCast(vb, "J", "F");
break;
case LONG_TO_INT:
to = nCast(vb, "J", "I");
break;
default:
throw new RuntimeException();
}
x(nAssign(va, to));
}
use of com.googlecode.dex2jar.ir.expr.Value in project dex2jar by pxb1988.
the class Dex2IrAdapter method visitStmt2R1N.
@Override
public void visitStmt2R1N(Op op, int a, int b, int content) {
Local va = locals[a];
Local vb = locals[b];
Value to;
switch(op) {
case ADD_INT_LIT16:
case ADD_INT_LIT8:
to = nAdd(vb, nInt(content), "I");
break;
case RSUB_INT_LIT8:
case //
RSUB_INT:
to = nSub(nInt(content), vb, "I");
break;
case MUL_INT_LIT8:
case MUL_INT_LIT16:
to = nMul(vb, nInt(content), "I");
break;
case DIV_INT_LIT16:
case DIV_INT_LIT8:
to = nDiv(vb, nInt(content), "I");
break;
case REM_INT_LIT16:
case REM_INT_LIT8:
to = nRem(vb, nInt(content), "I");
break;
case AND_INT_LIT16:
case AND_INT_LIT8:
to = nAnd(vb, nInt(content), content < 0 || content > 1 ? "I" : TypeClass.ZI.name);
break;
case OR_INT_LIT16:
case OR_INT_LIT8:
to = nOr(vb, nInt(content), content < 0 || content > 1 ? "I" : TypeClass.ZI.name);
break;
case XOR_INT_LIT16:
case XOR_INT_LIT8:
to = nXor(vb, nInt(content), content < 0 || content > 1 ? "I" : TypeClass.ZI.name);
break;
case SHL_INT_LIT8:
to = nShl(vb, nInt(content), "I");
break;
case SHR_INT_LIT8:
to = nShr(vb, nInt(content), "I");
break;
case USHR_INT_LIT8:
to = nUshr(vb, nInt(content), "I");
break;
default:
throw new RuntimeException();
}
x(nAssign(va, to));
}
Aggregations