Package com.android.dx.rop.code
Class Rops
java.lang.Object
com.android.dx.rop.code.Rops
Standard instances of
Rop
.-
Field Summary
Modifier and TypeFieldDescriptionstatic final Rop
r,x,c: double :: r = x + c;
static final Rop
r,x,c: float :: r = x + c;
static final Rop
r,x,c: int :: r = x + c;
static final Rop
r,x,c: long :: r = x + c;
static final Rop
r,x,y: double :: r = x + y;
static final Rop
r,x,y: float :: r = x + y;
static final Rop
r,x,y: int :: r = x + y;
static final Rop
r,x,y: long :: r = x + y;
static final Rop
r: boolean; x: boolean[]; y: int :: r = x[y]
static final Rop
r: byte; x: byte[]; y: int :: r = x[y]
static final Rop
r: char; x: char[]; y: int :: r = x[y]
static final Rop
r: double; x: double[]; y: int :: r = x[y]
static final Rop
r: float; x: float[]; y: int :: r = x[y]
static final Rop
r,y: int; x: int[] :: r = x[y]
static final Rop
r: long; x: long[]; y: int :: r = x[y]
static final Rop
r: Object; x: Object[]; y: int :: r = x[y]
static final Rop
r: short; x: short[]; y: int :: r = x[y]
static final Rop
r,x,c: int :: r = x & c;
static final Rop
r,x,c: long :: r = x & c;
static final Rop
r,x,y: int :: r = x & y;
static final Rop
r,x,y: long :: r = x & y;
static final Rop
x: boolean; y: boolean[]; z: int :: y[z] = x
static final Rop
x: byte; y: byte[]; z: int :: y[z] = x
static final Rop
x: char; y: char[]; z: int :: y[z] = x
static final Rop
x: double; y: double[]; z: int :: y[z] = x
static final Rop
x: float; y: float[]; z: int :: y[z] = x
static final Rop
x,z: int; y: int[] :: y[z] = x
static final Rop
x: long; y: long[]; z: int :: y[z] = x
static final Rop
x: Object; y: Object[]; z: int :: y[z] = x
static final Rop
x: short; y: short[]; z: int :: y[z] = x
static final Rop
T: any type; r: int; x: T[]; :: r = x.length
static final Rop
T: any non-array object type; x: Object :: (T) x
(can throwClassCastException
)static final Rop
r: int; x,y: double :: r = cmpg(x, y);
static final Rop
r: int; x,y: float :: r = cmpg(x, y);
static final Rop
r: int; x,y: double :: r = cmpl(x, y);
static final Rop
r: int; x,y: float :: r = cmpl(x, y);
static final Rop
r: int; x,y: long :: r = cmp(x, y);
static final Rop
r, literal: double :: r = literal;
static final Rop
r, literal: float :: r = literal;
static final Rop
r, literal: int :: r = literal;
static final Rop
r, literal: long :: r = literal;
static final Rop
r, literal: Object :: r = literal;
static final Rop
r, literal: Object :: r = literal;
static final Rop
r: float; x: double :: r = (float) x
static final Rop
r: int; x: double :: r = (int) x
static final Rop
r: long; x: double :: r = (long) x
static final Rop
r: double; x: float :: r = (double) x
static final Rop
r: int; x: float :: r = (int) x
static final Rop
r: long; x: float :: r = (long) x
static final Rop
r: double; x: int :: r = (double) x
static final Rop
r: float; x: int :: r = (float) x
static final Rop
r: long; x: int :: r = (long) x
static final Rop
r: double; x: long :: r = (double) x
static final Rop
r: float; x: long :: r = (float) x
static final Rop
r: int; x: long :: r = (int) x
static final Rop
r,x,c: double :: r = x / c;
static final Rop
r,x,c: float :: r = x / c;
static final Rop
r,x,c: int :: r = x / c;
static final Rop
r,x,c: long :: r = x / c;
static final Rop
r,x,y: double :: r = x / y;
static final Rop
r,x,y: float :: r = x / y;
static final Rop
r,x,y: int :: r = x / y;
static final Rop
r,x,y: long :: r = x / y;
static final Rop
T: Any primitive type; v0..vx: T :: {v0, ..., vx}
static final Rop
r: boolean; x: Object; f: instance field spec of type boolean :: r = x.f
static final Rop
r: byte; x: Object; f: instance field spec of type byte :: r = x.f
static final Rop
r: char; x: Object; f: instance field spec of type char :: r = x.f
static final Rop
r: double; x: Object; f: instance field spec of type double :: r = x.f
static final Rop
r: float; x: Object; f: instance field spec of type float :: r = x.f
static final Rop
r: int; x: Object; f: instance field spec of type int :: r = x.f
static final Rop
r: long; x: Object; f: instance field spec of type long :: r = x.f
static final Rop
r: Object; x: Object; f: instance field spec of type Object :: r = x.f
static final Rop
r: short; x: Object; f: instance field spec of type short :: r = x.f
static final Rop
r: boolean; f: static field spec of type boolean :: r = f
static final Rop
r: byte; f: static field spec of type byte :: r = f
static final Rop
r: char; f: static field spec of type char :: r = f
static final Rop
r: double; f: static field spec of type double :: r = f
static final Rop
r: float; f: static field spec of type float :: r = f
static final Rop
r: int; f: static field spec of type int :: r = f
static final Rop
r: long; f: static field spec of type long :: r = f
static final Rop
r: Object; f: static field spec of type Object :: r = f
static final Rop
r: short; f: static field spec of type short :: r = f
static final Rop
goto label
static final Rop
x,y: int :: if (x == y) goto label
static final Rop
x,y: Object :: if (x == y) goto label
static final Rop
x: int :: if (x == 0) goto label
static final Rop
x: Object :: if (x == null) goto label
static final Rop
x,y: int :: if (x >= y) goto label
static final Rop
x: int :: if (x >= 0) goto label
static final Rop
x,y: int :: if (x > y) goto label
static final Rop
x: int :: if (x > 0) goto label
static final Rop
x,y: int :: if (x <= y) goto label
static final Rop
x: int :: if (x <= 0) goto label
static final Rop
x,y: int :: if (x < y) goto label
static final Rop
x: int :: if (x < 0) goto label
static final Rop
x,y: int :: if (x != y) goto label
static final Rop
x,y: Object :: if (x != y) goto label
static final Rop
x: int :: if (x != 0) goto label
static final Rop
x: Object :: if (x != null) goto label
static final Rop
T: any non-array object type; x: Object :: x instanceof T
.static final Rop
x: Double :: local variable begins in x
static final Rop
x: Float :: local variable begins in x
static final Rop
x: Int :: local variable begins in x
static final Rop
x: Long :: local variable begins in x
static final Rop
x: Object :: local variable begins in x
static final Rop
x: Object :: monitorenter(x)
static final Rop
x: Object :: monitorexit(x)
static final Rop
r,x: double :: r = x;
static final Rop
r,x: float :: r = x;
static final Rop
r,x: int :: r = x;
static final Rop
r,x: long :: r = x;
static final Rop
r,x: Object :: r = x;
static final Rop
r,param(x): double :: r = param(x);
static final Rop
r,param(x): float :: r = param(x);
static final Rop
r,param(x): int :: r = param(x);
static final Rop
r,param(x): long :: r = param(x);
static final Rop
r,param(x): Object :: r = param(x);
static final Rop
r,x: ReturnAddress :: r = x;
Note that this rop-form instruction has no dex-form equivilent and must be removed before the dex conversion.static final Rop
r,x,c: double :: r = x * c;
static final Rop
r,x,c: float :: r = x * c;
static final Rop
r,x,c: int :: r = x * c;
static final Rop
r,x,c: long :: r = x * c;
static final Rop
r,x,y: double :: r = x * y;
static final Rop
r,x,y: float :: r = x * y;
static final Rop
r,x,y: int :: r = x * y;
static final Rop
r,x,y: long :: r = x * y;
static final Rop
r,x: double :: r = -x;
static final Rop
r,x: float :: r = -x;
static final Rop
r,x: int :: r = -x;
static final Rop
r,x: long :: r = -x;
static final Rop
r: boolean[]; x: int :: r = new boolean[x]
static final Rop
r: byte[]; x: int :: r = new byte[x]
static final Rop
r: char[]; x: int :: r = new char[x]
static final Rop
r: double[]; x: int :: r = new double[x]
static final Rop
r: float[]; x: int :: r = new float[x]
static final Rop
r: int[]; x: int :: r = new int[x]
static final Rop
r: long[]; x: int :: r = new long[x]
static final Rop
r: short[]; x: int :: r = new short[x]
static final Rop
T: any non-array object type :: r = alloc(T)
(allocate heap space for an object)static final Rop
nop()
static final Rop
r,x: int :: r = ~x;
static final Rop
r,x: long :: r = ~x;
static final Rop
r,x,c: int :: r = x | c;
static final Rop
r,x,c: long :: r = x | c;
static final Rop
r,x,y: int :: r = x | y;
static final Rop
r,x,y: long :: r = x | y;
static final Rop
x: int; y: Object; f: instance field spec of type boolean :: y.f = x
static final Rop
x: int; y: Object; f: instance field spec of type byte :: y.f = x
static final Rop
x: int; y: Object; f: instance field spec of type char :: y.f = x
static final Rop
x: double; y: Object; f: instance field spec of type double :: y.f = x
static final Rop
x: float; y: Object; f: instance field spec of type float :: y.f = x
static final Rop
x: int; y: Object; f: instance field spec of type int :: y.f = x
static final Rop
x: long; y: Object; f: instance field spec of type long :: y.f = x
static final Rop
x: Object; y: Object; f: instance field spec of type Object :: y.f = x
static final Rop
x: int; y: Object; f: instance field spec of type short :: y.f = x
static final Rop
f: static field spec of type boolean; x: boolean :: f = x
static final Rop
f: static field spec of type byte; x: byte :: f = x
static final Rop
f: static field spec of type char; x: char :: f = x
static final Rop
f: static field spec of type double; x: double :: f = x
static final Rop
f: static field spec of type float; x: float :: f = x
static final Rop
f: static field spec of type int; x: int :: f = x
static final Rop
f: static field spec of type long; x: long :: f = x
static final Rop
f: static field spec of type Object; x: Object :: f = x
static final Rop
f: static field spec of type short; x: short :: f = x
static final Rop
r,x,c: double :: r = x % c;
static final Rop
r,x,c: float :: r = x % c;
static final Rop
r,x,c: int :: r = x % c;
static final Rop
r,x,c: long :: r = x % c;
static final Rop
r,x,y: double :: r = x % y;
static final Rop
r,x,y: float :: r = x % y;
static final Rop
r,x,y: int :: r = x % y;
static final Rop
r,x,y: long :: r = x % y;
static final Rop
x: double; return x
static final Rop
x: float; return x
static final Rop
x: int; return x
static final Rop
x: long; return x
static final Rop
x: Object; return x
static final Rop
return void
static final Rop
r,x,c: int :: r = x << c;
static final Rop
r,x: long; c: int :: r = x << c;
static final Rop
r,x,y: int :: r = x << y;
static final Rop
r,x: long; y: int :: r = x << y;
static final Rop
r,x,c: int :: r = x >> c;
static final Rop
r,x: long; c: int :: r = x >> c;
static final Rop
r,x,y: int :: r = x >> y;
static final Rop
r,x: long; y: int :: r = x >> y;
static final Rop
r,x,c: double :: r = x - c;
static final Rop
r,x,c: float :: r = x - c;
static final Rop
r,x,c: int :: r = x - c;
static final Rop
r,x,c: long :: r = x - c;
static final Rop
r,x,y: double :: r = x - y;
static final Rop
r,x,y: float :: r = x - y;
static final Rop
r,x,y: int :: r = x - y;
static final Rop
r,x,y: long :: r = x - y;
static final Rop
x: int :: goto switchtable[x]
static final Rop
x: Throwable :: throw(x)
static final Rop
r,x: int :: r = (x << 24) >> 24
(Java-style convert int to byte)static final Rop
r,x: int :: r = x & 0xffff
(Java-style convert int to char)static final Rop
r,x: int :: r = (x << 16) >> 16
(Java-style convert int to short)static final Rop
r,x,c: int :: r = x >>> c;
static final Rop
r,x: long; c: int :: r = x >>> c;
static final Rop
r,x,y: int :: r = x >>> y;
static final Rop
r,x: long; y: int :: r = x >>> y;
static final Rop
r,x,c: int :: r = x ^ c;
static final Rop
r,x,c: long :: r = x ^ c;
static final Rop
r,x,y: int :: r = x ^ y;
static final Rop
r,x,y: long :: r = x ^ y;
-
Method Summary
Modifier and TypeMethodDescriptionstatic Rop
Returns the appropriateadd
rop for the given types.static Rop
opAget
(TypeBearer type) Returns the appropriateaget
rop for the given type.static Rop
Returns the appropriateand
rop for the given types.static Rop
opAput
(TypeBearer type) Returns the appropriateaput
rop for the given type.static Rop
opCmpg
(TypeBearer type) Returns the appropriatecmpg
rop for the given type.static Rop
opCmpl
(TypeBearer type) Returns the appropriatecmpl
rop for the given type.static Rop
opConst
(TypeBearer type) Returns the appropriateconst
rop for the given type.static Rop
opConv
(TypeBearer dest, TypeBearer source) Returns the appropriateconv
rop for the given types.static Rop
Returns the appropriatediv
rop for the given types.static Rop
opFilledNewArray
(TypeBearer arrayType, int count) Returns the appropriatefilled-new-array
rop for the given type.static Rop
opGetField
(TypeBearer type) Returns the appropriateget-field
rop for the given type.static Rop
opGetStatic
(TypeBearer type) Returns the appropriateget-static
rop for the given type.static Rop
Returns the appropriateif-eq
rop for the given sources.static Rop
Returns the appropriateif-ge
rop for the given sources.static Rop
Returns the appropriateif-gt
rop for the given sources.static Rop
Returns the appropriateif-le
rop for the given sources.static Rop
Returns the appropriateif-lt
rop for the given sources.static Rop
Returns the appropriateif-ne
rop for the given sources.static Rop
opInvokeDirect
(Prototype meth) Returns the appropriateinvoke-direct
rop for the given type.static Rop
opInvokeInterface
(Prototype meth) Returns the appropriateinvoke-interface
rop for the given type.static Rop
opInvokePolymorphic
(Prototype meth) Returns the appropriateinvoke-polymorphic
rop for the given type.static Rop
opInvokeStatic
(Prototype meth) Returns the appropriateinvoke-static
rop for the given type.static Rop
opInvokeSuper
(Prototype meth) Returns the appropriateinvoke-super
rop for the given type.static Rop
opInvokeVirtual
(Prototype meth) Returns the appropriateinvoke-virtual
rop for the given type.static Rop
opMarkLocal
(TypeBearer type) Returns the appropriatemark-local
rop for the given type.static Rop
opMove
(TypeBearer type) Returns the appropriatemove
rop for the given type.static Rop
opMoveException
(TypeBearer type) Returns the appropriatemove-exception
rop for the given type.static Rop
opMoveParam
(TypeBearer type) Returns the appropriatemove-param
rop for the given type.static Rop
opMoveResult
(TypeBearer type) Returns the appropriatemove-result
rop for the given type.static Rop
opMoveResultPseudo
(TypeBearer type) Returns the appropriatemove-result-pseudo
rop for the given type.static Rop
Returns the appropriatemul
rop for the given types.static Rop
opNeg
(TypeBearer type) Returns the appropriateneg
rop for the given type.static Rop
opNewArray
(TypeBearer arrayType) Returns the appropriatenew-array
rop for the given type.static Rop
opNot
(TypeBearer type) Returns the appropriatenot
rop for the given type.static Rop
Returns the appropriateor
rop for the given types.static Rop
opPutField
(TypeBearer type) Returns the appropriateput-field
rop for the given type.static Rop
opPutStatic
(TypeBearer type) Returns the appropriateput-static
rop for the given type.static Rop
Returns the appropriaterem
rop for the given types.static Rop
opReturn
(TypeBearer type) Returns the appropriatereturn
rop for the given type.static Rop
Returns the appropriateshl
rop for the given types.static Rop
Returns the appropriateshr
rop for the given types.static Rop
Returns the appropriatesub
rop for the given types.static Rop
Returns the appropriateushr
rop for the given types.static Rop
Returns the appropriatexor
rop for the given types.static Rop
ropFor
(int opcode, TypeBearer dest, TypeList sources, Constant cst) Returns the appropriate rop for the given opcode, destination, and sources.
-
Field Details
-
NOP
nop()
-
MOVE_INT
r,x: int :: r = x;
-
MOVE_LONG
r,x: long :: r = x;
-
MOVE_FLOAT
r,x: float :: r = x;
-
MOVE_DOUBLE
r,x: double :: r = x;
-
MOVE_OBJECT
r,x: Object :: r = x;
-
MOVE_RETURN_ADDRESS
r,x: ReturnAddress :: r = x;
Note that this rop-form instruction has no dex-form equivilent and must be removed before the dex conversion. -
MOVE_PARAM_INT
r,param(x): int :: r = param(x);
-
MOVE_PARAM_LONG
r,param(x): long :: r = param(x);
-
MOVE_PARAM_FLOAT
r,param(x): float :: r = param(x);
-
MOVE_PARAM_DOUBLE
r,param(x): double :: r = param(x);
-
MOVE_PARAM_OBJECT
r,param(x): Object :: r = param(x);
-
CONST_INT
r, literal: int :: r = literal;
-
CONST_LONG
r, literal: long :: r = literal;
-
CONST_FLOAT
r, literal: float :: r = literal;
-
CONST_DOUBLE
r, literal: double :: r = literal;
-
CONST_OBJECT
r, literal: Object :: r = literal;
-
CONST_OBJECT_NOTHROW
r, literal: Object :: r = literal;
-
GOTO
goto label
-
IF_EQZ_INT
x: int :: if (x == 0) goto label
-
IF_NEZ_INT
x: int :: if (x != 0) goto label
-
IF_LTZ_INT
x: int :: if (x < 0) goto label
-
IF_GEZ_INT
x: int :: if (x >= 0) goto label
-
IF_LEZ_INT
x: int :: if (x <= 0) goto label
-
IF_GTZ_INT
x: int :: if (x > 0) goto label
-
IF_EQZ_OBJECT
x: Object :: if (x == null) goto label
-
IF_NEZ_OBJECT
x: Object :: if (x != null) goto label
-
IF_EQ_INT
x,y: int :: if (x == y) goto label
-
IF_NE_INT
x,y: int :: if (x != y) goto label
-
IF_LT_INT
x,y: int :: if (x < y) goto label
-
IF_GE_INT
x,y: int :: if (x >= y) goto label
-
IF_LE_INT
x,y: int :: if (x <= y) goto label
-
IF_GT_INT
x,y: int :: if (x > y) goto label
-
IF_EQ_OBJECT
x,y: Object :: if (x == y) goto label
-
IF_NE_OBJECT
x,y: Object :: if (x != y) goto label
-
SWITCH
x: int :: goto switchtable[x]
-
ADD_INT
r,x,y: int :: r = x + y;
-
ADD_LONG
r,x,y: long :: r = x + y;
-
ADD_FLOAT
r,x,y: float :: r = x + y;
-
ADD_DOUBLE
r,x,y: double :: r = x + y;
-
SUB_INT
r,x,y: int :: r = x - y;
-
SUB_LONG
r,x,y: long :: r = x - y;
-
SUB_FLOAT
r,x,y: float :: r = x - y;
-
SUB_DOUBLE
r,x,y: double :: r = x - y;
-
MUL_INT
r,x,y: int :: r = x * y;
-
MUL_LONG
r,x,y: long :: r = x * y;
-
MUL_FLOAT
r,x,y: float :: r = x * y;
-
MUL_DOUBLE
r,x,y: double :: r = x * y;
-
DIV_INT
r,x,y: int :: r = x / y;
-
DIV_LONG
r,x,y: long :: r = x / y;
-
DIV_FLOAT
r,x,y: float :: r = x / y;
-
DIV_DOUBLE
r,x,y: double :: r = x / y;
-
REM_INT
r,x,y: int :: r = x % y;
-
REM_LONG
r,x,y: long :: r = x % y;
-
REM_FLOAT
r,x,y: float :: r = x % y;
-
REM_DOUBLE
r,x,y: double :: r = x % y;
-
NEG_INT
r,x: int :: r = -x;
-
NEG_LONG
r,x: long :: r = -x;
-
NEG_FLOAT
r,x: float :: r = -x;
-
NEG_DOUBLE
r,x: double :: r = -x;
-
AND_INT
r,x,y: int :: r = x & y;
-
AND_LONG
r,x,y: long :: r = x & y;
-
OR_INT
r,x,y: int :: r = x | y;
-
OR_LONG
r,x,y: long :: r = x | y;
-
XOR_INT
r,x,y: int :: r = x ^ y;
-
XOR_LONG
r,x,y: long :: r = x ^ y;
-
SHL_INT
r,x,y: int :: r = x << y;
-
SHL_LONG
r,x: long; y: int :: r = x << y;
-
SHR_INT
r,x,y: int :: r = x >> y;
-
SHR_LONG
r,x: long; y: int :: r = x >> y;
-
USHR_INT
r,x,y: int :: r = x >>> y;
-
USHR_LONG
r,x: long; y: int :: r = x >>> y;
-
NOT_INT
r,x: int :: r = ~x;
-
NOT_LONG
r,x: long :: r = ~x;
-
ADD_CONST_INT
r,x,c: int :: r = x + c;
-
ADD_CONST_LONG
r,x,c: long :: r = x + c;
-
ADD_CONST_FLOAT
r,x,c: float :: r = x + c;
-
ADD_CONST_DOUBLE
r,x,c: double :: r = x + c;
-
SUB_CONST_INT
r,x,c: int :: r = x - c;
-
SUB_CONST_LONG
r,x,c: long :: r = x - c;
-
SUB_CONST_FLOAT
r,x,c: float :: r = x - c;
-
SUB_CONST_DOUBLE
r,x,c: double :: r = x - c;
-
MUL_CONST_INT
r,x,c: int :: r = x * c;
-
MUL_CONST_LONG
r,x,c: long :: r = x * c;
-
MUL_CONST_FLOAT
r,x,c: float :: r = x * c;
-
MUL_CONST_DOUBLE
r,x,c: double :: r = x * c;
-
DIV_CONST_INT
r,x,c: int :: r = x / c;
-
DIV_CONST_LONG
r,x,c: long :: r = x / c;
-
DIV_CONST_FLOAT
r,x,c: float :: r = x / c;
-
DIV_CONST_DOUBLE
r,x,c: double :: r = x / c;
-
REM_CONST_INT
r,x,c: int :: r = x % c;
-
REM_CONST_LONG
r,x,c: long :: r = x % c;
-
REM_CONST_FLOAT
r,x,c: float :: r = x % c;
-
REM_CONST_DOUBLE
r,x,c: double :: r = x % c;
-
AND_CONST_INT
r,x,c: int :: r = x & c;
-
AND_CONST_LONG
r,x,c: long :: r = x & c;
-
OR_CONST_INT
r,x,c: int :: r = x | c;
-
OR_CONST_LONG
r,x,c: long :: r = x | c;
-
XOR_CONST_INT
r,x,c: int :: r = x ^ c;
-
XOR_CONST_LONG
r,x,c: long :: r = x ^ c;
-
SHL_CONST_INT
r,x,c: int :: r = x << c;
-
SHL_CONST_LONG
r,x: long; c: int :: r = x << c;
-
SHR_CONST_INT
r,x,c: int :: r = x >> c;
-
SHR_CONST_LONG
r,x: long; c: int :: r = x >> c;
-
USHR_CONST_INT
r,x,c: int :: r = x >>> c;
-
USHR_CONST_LONG
r,x: long; c: int :: r = x >>> c;
-
CMPL_LONG
r: int; x,y: long :: r = cmp(x, y);
-
CMPL_FLOAT
r: int; x,y: float :: r = cmpl(x, y);
-
CMPL_DOUBLE
r: int; x,y: double :: r = cmpl(x, y);
-
CMPG_FLOAT
r: int; x,y: float :: r = cmpg(x, y);
-
CMPG_DOUBLE
r: int; x,y: double :: r = cmpg(x, y);
-
CONV_L2I
r: int; x: long :: r = (int) x
-
CONV_F2I
r: int; x: float :: r = (int) x
-
CONV_D2I
r: int; x: double :: r = (int) x
-
CONV_I2L
r: long; x: int :: r = (long) x
-
CONV_F2L
r: long; x: float :: r = (long) x
-
CONV_D2L
r: long; x: double :: r = (long) x
-
CONV_I2F
r: float; x: int :: r = (float) x
-
CONV_L2F
r: float; x: long :: r = (float) x
-
CONV_D2F
r: float; x: double :: r = (float) x
-
CONV_I2D
r: double; x: int :: r = (double) x
-
CONV_L2D
r: double; x: long :: r = (double) x
-
CONV_F2D
r: double; x: float :: r = (double) x
-
TO_BYTE
r,x: int :: r = (x << 24) >> 24
(Java-style convert int to byte) -
TO_CHAR
r,x: int :: r = x & 0xffff
(Java-style convert int to char) -
TO_SHORT
r,x: int :: r = (x << 16) >> 16
(Java-style convert int to short) -
RETURN_VOID
return void
-
RETURN_INT
x: int; return x
-
RETURN_LONG
x: long; return x
-
RETURN_FLOAT
x: float; return x
-
RETURN_DOUBLE
x: double; return x
-
RETURN_OBJECT
x: Object; return x
-
ARRAY_LENGTH
T: any type; r: int; x: T[]; :: r = x.length
-
THROW
x: Throwable :: throw(x)
-
MONITOR_ENTER
x: Object :: monitorenter(x)
-
MONITOR_EXIT
x: Object :: monitorexit(x)
-
AGET_INT
r,y: int; x: int[] :: r = x[y]
-
AGET_LONG
r: long; x: long[]; y: int :: r = x[y]
-
AGET_FLOAT
r: float; x: float[]; y: int :: r = x[y]
-
AGET_DOUBLE
r: double; x: double[]; y: int :: r = x[y]
-
AGET_OBJECT
r: Object; x: Object[]; y: int :: r = x[y]
-
AGET_BOOLEAN
r: boolean; x: boolean[]; y: int :: r = x[y]
-
AGET_BYTE
r: byte; x: byte[]; y: int :: r = x[y]
-
AGET_CHAR
r: char; x: char[]; y: int :: r = x[y]
-
AGET_SHORT
r: short; x: short[]; y: int :: r = x[y]
-
APUT_INT
x,z: int; y: int[] :: y[z] = x
-
APUT_LONG
x: long; y: long[]; z: int :: y[z] = x
-
APUT_FLOAT
x: float; y: float[]; z: int :: y[z] = x
-
APUT_DOUBLE
x: double; y: double[]; z: int :: y[z] = x
-
APUT_OBJECT
x: Object; y: Object[]; z: int :: y[z] = x
-
APUT_BOOLEAN
x: boolean; y: boolean[]; z: int :: y[z] = x
-
APUT_BYTE
x: byte; y: byte[]; z: int :: y[z] = x
-
APUT_CHAR
x: char; y: char[]; z: int :: y[z] = x
-
APUT_SHORT
x: short; y: short[]; z: int :: y[z] = x
-
NEW_INSTANCE
T: any non-array object type :: r = alloc(T)
(allocate heap space for an object) -
NEW_ARRAY_INT
r: int[]; x: int :: r = new int[x]
-
NEW_ARRAY_LONG
r: long[]; x: int :: r = new long[x]
-
NEW_ARRAY_FLOAT
r: float[]; x: int :: r = new float[x]
-
NEW_ARRAY_DOUBLE
r: double[]; x: int :: r = new double[x]
-
NEW_ARRAY_BOOLEAN
r: boolean[]; x: int :: r = new boolean[x]
-
NEW_ARRAY_BYTE
r: byte[]; x: int :: r = new byte[x]
-
NEW_ARRAY_CHAR
r: char[]; x: int :: r = new char[x]
-
NEW_ARRAY_SHORT
r: short[]; x: int :: r = new short[x]
-
CHECK_CAST
T: any non-array object type; x: Object :: (T) x
(can throwClassCastException
) -
INSTANCE_OF
T: any non-array object type; x: Object :: x instanceof T
. Note: This is listed as throwingError
explicitly because the op can throw, but there are no other predefined exceptions for it. -
GET_FIELD_INT
r: int; x: Object; f: instance field spec of type int :: r = x.f
-
GET_FIELD_LONG
r: long; x: Object; f: instance field spec of type long :: r = x.f
-
GET_FIELD_FLOAT
r: float; x: Object; f: instance field spec of type float :: r = x.f
-
GET_FIELD_DOUBLE
r: double; x: Object; f: instance field spec of type double :: r = x.f
-
GET_FIELD_OBJECT
r: Object; x: Object; f: instance field spec of type Object :: r = x.f
-
GET_FIELD_BOOLEAN
r: boolean; x: Object; f: instance field spec of type boolean :: r = x.f
-
GET_FIELD_BYTE
r: byte; x: Object; f: instance field spec of type byte :: r = x.f
-
GET_FIELD_CHAR
r: char; x: Object; f: instance field spec of type char :: r = x.f
-
GET_FIELD_SHORT
r: short; x: Object; f: instance field spec of type short :: r = x.f
-
GET_STATIC_INT
r: int; f: static field spec of type int :: r = f
-
GET_STATIC_LONG
r: long; f: static field spec of type long :: r = f
-
GET_STATIC_FLOAT
r: float; f: static field spec of type float :: r = f
-
GET_STATIC_DOUBLE
r: double; f: static field spec of type double :: r = f
-
GET_STATIC_OBJECT
r: Object; f: static field spec of type Object :: r = f
-
GET_STATIC_BOOLEAN
r: boolean; f: static field spec of type boolean :: r = f
-
GET_STATIC_BYTE
r: byte; f: static field spec of type byte :: r = f
-
GET_STATIC_CHAR
r: char; f: static field spec of type char :: r = f
-
GET_STATIC_SHORT
r: short; f: static field spec of type short :: r = f
-
PUT_FIELD_INT
x: int; y: Object; f: instance field spec of type int :: y.f = x
-
PUT_FIELD_LONG
x: long; y: Object; f: instance field spec of type long :: y.f = x
-
PUT_FIELD_FLOAT
x: float; y: Object; f: instance field spec of type float :: y.f = x
-
PUT_FIELD_DOUBLE
x: double; y: Object; f: instance field spec of type double :: y.f = x
-
PUT_FIELD_OBJECT
x: Object; y: Object; f: instance field spec of type Object :: y.f = x
-
PUT_FIELD_BOOLEAN
x: int; y: Object; f: instance field spec of type boolean :: y.f = x
-
PUT_FIELD_BYTE
x: int; y: Object; f: instance field spec of type byte :: y.f = x
-
PUT_FIELD_CHAR
x: int; y: Object; f: instance field spec of type char :: y.f = x
-
PUT_FIELD_SHORT
x: int; y: Object; f: instance field spec of type short :: y.f = x
-
PUT_STATIC_INT
f: static field spec of type int; x: int :: f = x
-
PUT_STATIC_LONG
f: static field spec of type long; x: long :: f = x
-
PUT_STATIC_FLOAT
f: static field spec of type float; x: float :: f = x
-
PUT_STATIC_DOUBLE
f: static field spec of type double; x: double :: f = x
-
PUT_STATIC_OBJECT
f: static field spec of type Object; x: Object :: f = x
-
PUT_STATIC_BOOLEAN
f: static field spec of type boolean; x: boolean :: f = x
-
PUT_STATIC_BYTE
f: static field spec of type byte; x: byte :: f = x
-
PUT_STATIC_CHAR
f: static field spec of type char; x: char :: f = x
-
PUT_STATIC_SHORT
f: static field spec of type short; x: short :: f = x
-
MARK_LOCAL_INT
x: Int :: local variable begins in x
-
MARK_LOCAL_LONG
x: Long :: local variable begins in x
-
MARK_LOCAL_FLOAT
x: Float :: local variable begins in x
-
MARK_LOCAL_DOUBLE
x: Double :: local variable begins in x
-
MARK_LOCAL_OBJECT
x: Object :: local variable begins in x
-
FILL_ARRAY_DATA
T: Any primitive type; v0..vx: T :: {v0, ..., vx}
-
-
Method Details
-
ropFor
Returns the appropriate rop for the given opcode, destination, and sources. The result is typically, but not necessarily, a shared instance.Note: This method does not do complete error checking on its arguments, and so it may return an instance which seemed "right enough" even though in actuality the passed arguments don't quite match what is returned. TODO: Revisit this issue.
- Parameters:
opcode
- the opcodedest
-non-null;
destination (result) type, orType.VOID
if nonesources
-non-null;
list of source typescst
-null-ok;
associated constant, if any- Returns:
non-null;
an appropriate instance
-
opMove
Returns the appropriatemove
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being moved- Returns:
non-null;
an appropriate instance
-
opMoveParam
Returns the appropriatemove-param
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being moved- Returns:
non-null;
an appropriate instance
-
opMoveException
Returns the appropriatemove-exception
rop for the given type. The result may be a shared instance.- Parameters:
type
-non-null;
type of the exception- Returns:
non-null;
an appropriate instance
-
opMoveResult
Returns the appropriatemove-result
rop for the given type. The result may be a shared instance.- Parameters:
type
-non-null;
type of the parameter- Returns:
non-null;
an appropriate instance
-
opMoveResultPseudo
Returns the appropriatemove-result-pseudo
rop for the given type. The result may be a shared instance.- Parameters:
type
-non-null;
type of the parameter- Returns:
non-null;
an appropriate instance
-
opConst
Returns the appropriateconst
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of the constant- Returns:
non-null;
an appropriate instance
-
opIfEq
Returns the appropriateif-eq
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opIfNe
Returns the appropriateif-ne
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opIfLt
Returns the appropriateif-lt
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opIfGe
Returns the appropriateif-ge
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opIfGt
Returns the appropriateif-gt
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opIfLe
Returns the appropriateif-le
rop for the given sources. The result is a shared instance.- Parameters:
types
-non-null;
source types- Returns:
non-null;
an appropriate instance
-
opAdd
Returns the appropriateadd
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opSub
Returns the appropriatesub
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opMul
Returns the appropriatemul
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opDiv
Returns the appropriatediv
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opRem
Returns the appropriaterem
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opAnd
Returns the appropriateand
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opOr
Returns the appropriateor
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opXor
Returns the appropriatexor
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opShl
Returns the appropriateshl
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opShr
Returns the appropriateshr
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opUshr
Returns the appropriateushr
rop for the given types. The result is a shared instance.- Parameters:
types
-non-null;
types of the sources- Returns:
non-null;
an appropriate instance
-
opNeg
Returns the appropriateneg
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being operated on- Returns:
non-null;
an appropriate instance
-
opNot
Returns the appropriatenot
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being operated on- Returns:
non-null;
an appropriate instance
-
opCmpl
Returns the appropriatecmpl
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being compared- Returns:
non-null;
an appropriate instance
-
opCmpg
Returns the appropriatecmpg
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being compared- Returns:
non-null;
an appropriate instance
-
opConv
Returns the appropriateconv
rop for the given types. The result is a shared instance.- Parameters:
dest
-non-null;
target value typesource
-non-null;
source value type- Returns:
non-null;
an appropriate instance
-
opReturn
Returns the appropriatereturn
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being returned- Returns:
non-null;
an appropriate instance
-
opAget
Returns the appropriateaget
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
element type of array being accessed- Returns:
non-null;
an appropriate instance
-
opAput
Returns the appropriateaput
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
element type of array being accessed- Returns:
non-null;
an appropriate instance
-
opNewArray
Returns the appropriatenew-array
rop for the given type. The result is a shared instance.- Parameters:
arrayType
-non-null;
array type of array being created- Returns:
non-null;
an appropriate instance
-
opFilledNewArray
Returns the appropriatefilled-new-array
rop for the given type. The result may be a shared instance.- Parameters:
arrayType
-non-null;
type of array being createdcount
-count >= 0;
number of elements that the array should have- Returns:
non-null;
an appropriate instance
-
opGetField
Returns the appropriateget-field
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of the field in question- Returns:
non-null;
an appropriate instance
-
opPutField
Returns the appropriateput-field
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of the field in question- Returns:
non-null;
an appropriate instance
-
opGetStatic
Returns the appropriateget-static
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of the field in question- Returns:
non-null;
an appropriate instance
-
opPutStatic
Returns the appropriateput-static
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of the field in question- Returns:
non-null;
an appropriate instance
-
opInvokeStatic
Returns the appropriateinvoke-static
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method- Returns:
non-null;
an appropriate instance
-
opInvokeVirtual
Returns the appropriateinvoke-virtual
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method, including thethis
parameter- Returns:
non-null;
an appropriate instance
-
opInvokeSuper
Returns the appropriateinvoke-super
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method, including thethis
parameter- Returns:
non-null;
an appropriate instance
-
opInvokeDirect
Returns the appropriateinvoke-direct
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method, including thethis
parameter- Returns:
non-null;
an appropriate instance
-
opInvokeInterface
Returns the appropriateinvoke-interface
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method, including thethis
parameter- Returns:
non-null;
an appropriate instance
-
opInvokePolymorphic
Returns the appropriateinvoke-polymorphic
rop for the given type. The result is typically a newly-allocated instance.- Parameters:
meth
-non-null;
descriptor of the method, including thethis
parameter- Returns:
non-null;
an appropriate instance
-
opMarkLocal
Returns the appropriatemark-local
rop for the given type. The result is a shared instance.- Parameters:
type
-non-null;
type of value being marked- Returns:
non-null;
an appropriate instance
-