Class Rops
java.lang.Object
com.android.dx.rop.code.Rops
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Ropr,x,c: double :: r = x + c;static final Ropr,x,c: float :: r = x + c;static final Ropr,x,c: int :: r = x + c;static final Ropr,x,c: long :: r = x + c;static final Ropr,x,y: double :: r = x + y;static final Ropr,x,y: float :: r = x + y;static final Ropr,x,y: int :: r = x + y;static final Ropr,x,y: long :: r = x + y;static final Ropr: boolean; x: boolean[]; y: int :: r = x[y]static final Ropr: byte; x: byte[]; y: int :: r = x[y]static final Ropr: char; x: char[]; y: int :: r = x[y]static final Ropr: double; x: double[]; y: int :: r = x[y]static final Ropr: float; x: float[]; y: int :: r = x[y]static final Ropr,y: int; x: int[] :: r = x[y]static final Ropr: long; x: long[]; y: int :: r = x[y]static final Ropr: Object; x: Object[]; y: int :: r = x[y]static final Ropr: short; x: short[]; y: int :: r = x[y]static final Ropr,x,c: int :: r = x & c;static final Ropr,x,c: long :: r = x & c;static final Ropr,x,y: int :: r = x & y;static final Ropr,x,y: long :: r = x & y;static final Ropx: boolean; y: boolean[]; z: int :: y[z] = xstatic final Ropx: byte; y: byte[]; z: int :: y[z] = xstatic final Ropx: char; y: char[]; z: int :: y[z] = xstatic final Ropx: double; y: double[]; z: int :: y[z] = xstatic final Ropx: float; y: float[]; z: int :: y[z] = xstatic final Ropx,z: int; y: int[] :: y[z] = xstatic final Ropx: long; y: long[]; z: int :: y[z] = xstatic final Ropx: Object; y: Object[]; z: int :: y[z] = xstatic final Ropx: short; y: short[]; z: int :: y[z] = xstatic final RopT: any type; r: int; x: T[]; :: r = x.lengthstatic final RopT: any non-array object type; x: Object :: (T) x(can throwClassCastException)static final Ropr: int; x,y: double :: r = cmpg(x, y);static final Ropr: int; x,y: float :: r = cmpg(x, y);static final Ropr: int; x,y: double :: r = cmpl(x, y);static final Ropr: int; x,y: float :: r = cmpl(x, y);static final Ropr: int; x,y: long :: r = cmp(x, y);static final Ropr, literal: double :: r = literal;static final Ropr, literal: float :: r = literal;static final Ropr, literal: int :: r = literal;static final Ropr, literal: long :: r = literal;static final Ropr, literal: Object :: r = literal;static final Ropr, literal: Object :: r = literal;static final Ropr: float; x: double :: r = (float) xstatic final Ropr: int; x: double :: r = (int) xstatic final Ropr: long; x: double :: r = (long) xstatic final Ropr: double; x: float :: r = (double) xstatic final Ropr: int; x: float :: r = (int) xstatic final Ropr: long; x: float :: r = (long) xstatic final Ropr: double; x: int :: r = (double) xstatic final Ropr: float; x: int :: r = (float) xstatic final Ropr: long; x: int :: r = (long) xstatic final Ropr: double; x: long :: r = (double) xstatic final Ropr: float; x: long :: r = (float) xstatic final Ropr: int; x: long :: r = (int) xstatic final Ropr,x,c: double :: r = x / c;static final Ropr,x,c: float :: r = x / c;static final Ropr,x,c: int :: r = x / c;static final Ropr,x,c: long :: r = x / c;static final Ropr,x,y: double :: r = x / y;static final Ropr,x,y: float :: r = x / y;static final Ropr,x,y: int :: r = x / y;static final Ropr,x,y: long :: r = x / y;static final RopT: Any primitive type; v0..vx: T :: {v0, ..., vx}static final Ropr: boolean; x: Object; f: instance field spec of type boolean :: r = x.fstatic final Ropr: byte; x: Object; f: instance field spec of type byte :: r = x.fstatic final Ropr: char; x: Object; f: instance field spec of type char :: r = x.fstatic final Ropr: double; x: Object; f: instance field spec of type double :: r = x.fstatic final Ropr: float; x: Object; f: instance field spec of type float :: r = x.fstatic final Ropr: int; x: Object; f: instance field spec of type int :: r = x.fstatic final Ropr: long; x: Object; f: instance field spec of type long :: r = x.fstatic final Ropr: Object; x: Object; f: instance field spec of type Object :: r = x.fstatic final Ropr: short; x: Object; f: instance field spec of type short :: r = x.fstatic final Ropr: boolean; f: static field spec of type boolean :: r = fstatic final Ropr: byte; f: static field spec of type byte :: r = fstatic final Ropr: char; f: static field spec of type char :: r = fstatic final Ropr: double; f: static field spec of type double :: r = fstatic final Ropr: float; f: static field spec of type float :: r = fstatic final Ropr: int; f: static field spec of type int :: r = fstatic final Ropr: long; f: static field spec of type long :: r = fstatic final Ropr: Object; f: static field spec of type Object :: r = fstatic final Ropr: short; f: static field spec of type short :: r = fstatic final Ropgoto labelstatic final Ropx,y: int :: if (x == y) goto labelstatic final Ropx,y: Object :: if (x == y) goto labelstatic final Ropx: int :: if (x == 0) goto labelstatic final Ropx: Object :: if (x == null) goto labelstatic final Ropx,y: int :: if (x >= y) goto labelstatic final Ropx: int :: if (x >= 0) goto labelstatic final Ropx,y: int :: if (x > y) goto labelstatic final Ropx: int :: if (x > 0) goto labelstatic final Ropx,y: int :: if (x <= y) goto labelstatic final Ropx: int :: if (x <= 0) goto labelstatic final Ropx,y: int :: if (x < y) goto labelstatic final Ropx: int :: if (x < 0) goto labelstatic final Ropx,y: int :: if (x != y) goto labelstatic final Ropx,y: Object :: if (x != y) goto labelstatic final Ropx: int :: if (x != 0) goto labelstatic final Ropx: Object :: if (x != null) goto labelstatic final RopT: any non-array object type; x: Object :: x instanceof T.static final Ropx: Double :: local variable begins in xstatic final Ropx: Float :: local variable begins in xstatic final Ropx: Int :: local variable begins in xstatic final Ropx: Long :: local variable begins in xstatic final Ropx: Object :: local variable begins in xstatic final Ropx: Object :: monitorenter(x)static final Ropx: Object :: monitorexit(x)static final Ropr,x: double :: r = x;static final Ropr,x: float :: r = x;static final Ropr,x: int :: r = x;static final Ropr,x: long :: r = x;static final Ropr,x: Object :: r = x;static final Ropr,param(x): double :: r = param(x);static final Ropr,param(x): float :: r = param(x);static final Ropr,param(x): int :: r = param(x);static final Ropr,param(x): long :: r = param(x);static final Ropr,param(x): Object :: r = param(x);static final Ropr,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 Ropr,x,c: double :: r = x * c;static final Ropr,x,c: float :: r = x * c;static final Ropr,x,c: int :: r = x * c;static final Ropr,x,c: long :: r = x * c;static final Ropr,x,y: double :: r = x * y;static final Ropr,x,y: float :: r = x * y;static final Ropr,x,y: int :: r = x * y;static final Ropr,x,y: long :: r = x * y;static final Ropr,x: double :: r = -x;static final Ropr,x: float :: r = -x;static final Ropr,x: int :: r = -x;static final Ropr,x: long :: r = -x;static final Ropr: boolean[]; x: int :: r = new boolean[x]static final Ropr: byte[]; x: int :: r = new byte[x]static final Ropr: char[]; x: int :: r = new char[x]static final Ropr: double[]; x: int :: r = new double[x]static final Ropr: float[]; x: int :: r = new float[x]static final Ropr: int[]; x: int :: r = new int[x]static final Ropr: long[]; x: int :: r = new long[x]static final Ropr: short[]; x: int :: r = new short[x]static final RopT: any non-array object type :: r = alloc(T)(allocate heap space for an object)static final Ropnop()static final Ropr,x: int :: r = ~x;static final Ropr,x: long :: r = ~x;static final Ropr,x,c: int :: r = x | c;static final Ropr,x,c: long :: r = x | c;static final Ropr,x,y: int :: r = x | y;static final Ropr,x,y: long :: r = x | y;static final Ropx: int; y: Object; f: instance field spec of type boolean :: y.f = xstatic final Ropx: int; y: Object; f: instance field spec of type byte :: y.f = xstatic final Ropx: int; y: Object; f: instance field spec of type char :: y.f = xstatic final Ropx: double; y: Object; f: instance field spec of type double :: y.f = xstatic final Ropx: float; y: Object; f: instance field spec of type float :: y.f = xstatic final Ropx: int; y: Object; f: instance field spec of type int :: y.f = xstatic final Ropx: long; y: Object; f: instance field spec of type long :: y.f = xstatic final Ropx: Object; y: Object; f: instance field spec of type Object :: y.f = xstatic final Ropx: int; y: Object; f: instance field spec of type short :: y.f = xstatic final Ropf: static field spec of type boolean; x: boolean :: f = xstatic final Ropf: static field spec of type byte; x: byte :: f = xstatic final Ropf: static field spec of type char; x: char :: f = xstatic final Ropf: static field spec of type double; x: double :: f = xstatic final Ropf: static field spec of type float; x: float :: f = xstatic final Ropf: static field spec of type int; x: int :: f = xstatic final Ropf: static field spec of type long; x: long :: f = xstatic final Ropf: static field spec of type Object; x: Object :: f = xstatic final Ropf: static field spec of type short; x: short :: f = xstatic final Ropr,x,c: double :: r = x % c;static final Ropr,x,c: float :: r = x % c;static final Ropr,x,c: int :: r = x % c;static final Ropr,x,c: long :: r = x % c;static final Ropr,x,y: double :: r = x % y;static final Ropr,x,y: float :: r = x % y;static final Ropr,x,y: int :: r = x % y;static final Ropr,x,y: long :: r = x % y;static final Ropx: double; return xstatic final Ropx: float; return xstatic final Ropx: int; return xstatic final Ropx: long; return xstatic final Ropx: Object; return xstatic final Ropreturn voidstatic final Ropr,x,c: int :: r = x << c;static final Ropr,x: long; c: int :: r = x << c;static final Ropr,x,y: int :: r = x << y;static final Ropr,x: long; y: int :: r = x << y;static final Ropr,x,c: int :: r = x >> c;static final Ropr,x: long; c: int :: r = x >> c;static final Ropr,x,y: int :: r = x >> y;static final Ropr,x: long; y: int :: r = x >> y;static final Ropr,x,c: double :: r = x - c;static final Ropr,x,c: float :: r = x - c;static final Ropr,x,c: int :: r = x - c;static final Ropr,x,c: long :: r = x - c;static final Ropr,x,y: double :: r = x - y;static final Ropr,x,y: float :: r = x - y;static final Ropr,x,y: int :: r = x - y;static final Ropr,x,y: long :: r = x - y;static final Ropx: int :: goto switchtable[x]static final Ropx: Throwable :: throw(x)static final Ropr,x: int :: r = (x << 24) >> 24(Java-style convert int to byte)static final Ropr,x: int :: r = x & 0xffff(Java-style convert int to char)static final Ropr,x: int :: r = (x << 16) >> 16(Java-style convert int to short)static final Ropr,x,c: int :: r = x >>> c;static final Ropr,x: long; c: int :: r = x >>> c;static final Ropr,x,y: int :: r = x >>> y;static final Ropr,x: long; y: int :: r = x >>> y;static final Ropr,x,c: int :: r = x ^ c;static final Ropr,x,c: long :: r = x ^ c;static final Ropr,x,y: int :: r = x ^ y;static final Ropr,x,y: long :: r = x ^ y; -
Method Summary
Modifier and TypeMethodDescriptionstatic RopReturns the appropriateaddrop for the given types.static RopopAget(TypeBearer type) Returns the appropriateagetrop for the given type.static RopReturns the appropriateandrop for the given types.static RopopAput(TypeBearer type) Returns the appropriateaputrop for the given type.static RopopCmpg(TypeBearer type) Returns the appropriatecmpgrop for the given type.static RopopCmpl(TypeBearer type) Returns the appropriatecmplrop for the given type.static RopopConst(TypeBearer type) Returns the appropriateconstrop for the given type.static RopopConv(TypeBearer dest, TypeBearer source) Returns the appropriateconvrop for the given types.static RopReturns the appropriatedivrop for the given types.static RopopFilledNewArray(TypeBearer arrayType, int count) Returns the appropriatefilled-new-arrayrop for the given type.static RopopGetField(TypeBearer type) Returns the appropriateget-fieldrop for the given type.static RopopGetStatic(TypeBearer type) Returns the appropriateget-staticrop for the given type.static RopReturns the appropriateif-eqrop for the given sources.static RopReturns the appropriateif-gerop for the given sources.static RopReturns the appropriateif-gtrop for the given sources.static RopReturns the appropriateif-lerop for the given sources.static RopReturns the appropriateif-ltrop for the given sources.static RopReturns the appropriateif-nerop for the given sources.static RopopInvokeDirect(Prototype meth) Returns the appropriateinvoke-directrop for the given type.static RopopInvokeInterface(Prototype meth) Returns the appropriateinvoke-interfacerop for the given type.static RopopInvokePolymorphic(Prototype meth) Returns the appropriateinvoke-polymorphicrop for the given type.static RopopInvokeStatic(Prototype meth) Returns the appropriateinvoke-staticrop for the given type.static RopopInvokeSuper(Prototype meth) Returns the appropriateinvoke-superrop for the given type.static RopopInvokeVirtual(Prototype meth) Returns the appropriateinvoke-virtualrop for the given type.static RopopMarkLocal(TypeBearer type) Returns the appropriatemark-localrop for the given type.static RopopMove(TypeBearer type) Returns the appropriatemoverop for the given type.static RopopMoveException(TypeBearer type) Returns the appropriatemove-exceptionrop for the given type.static RopopMoveParam(TypeBearer type) Returns the appropriatemove-paramrop for the given type.static RopopMoveResult(TypeBearer type) Returns the appropriatemove-resultrop for the given type.static RopopMoveResultPseudo(TypeBearer type) Returns the appropriatemove-result-pseudorop for the given type.static RopReturns the appropriatemulrop for the given types.static RopopNeg(TypeBearer type) Returns the appropriatenegrop for the given type.static RopopNewArray(TypeBearer arrayType) Returns the appropriatenew-arrayrop for the given type.static RopopNot(TypeBearer type) Returns the appropriatenotrop for the given type.static RopReturns the appropriateorrop for the given types.static RopopPutField(TypeBearer type) Returns the appropriateput-fieldrop for the given type.static RopopPutStatic(TypeBearer type) Returns the appropriateput-staticrop for the given type.static RopReturns the appropriateremrop for the given types.static RopopReturn(TypeBearer type) Returns the appropriatereturnrop for the given type.static RopReturns the appropriateshlrop for the given types.static RopReturns the appropriateshrrop for the given types.static RopReturns the appropriatesubrop for the given types.static RopReturns the appropriateushrrop for the given types.static RopReturns the appropriatexorrop for the given types.static RopropFor(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 throwingErrorexplicitly 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.VOIDif nonesources-non-null;list of source typescst-null-ok;associated constant, if any- Returns:
non-null;an appropriate instance
-
opMove
Returns the appropriatemoverop 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-paramrop 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-exceptionrop 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-resultrop 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-pseudorop 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 appropriateconstrop 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
-
opIfNe
-
opIfLt
-
opIfGe
-
opIfGt
-
opIfLe
-
opAdd
-
opSub
-
opMul
-
opDiv
-
opRem
-
opAnd
-
opOr
-
opXor
-
opShl
-
opShr
-
opUshr
-
opNeg
Returns the appropriatenegrop 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 appropriatenotrop 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 appropriatecmplrop 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 appropriatecmpgrop 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 appropriateconvrop 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 appropriatereturnrop 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 appropriateagetrop 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 appropriateaputrop 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-arrayrop 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-arrayrop 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-fieldrop 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-fieldrop 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-staticrop 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-staticrop 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
-
opInvokeVirtual
-
opInvokeSuper
-
opInvokeDirect
-
opInvokeInterface
-
opInvokePolymorphic
-
opMarkLocal
Returns the appropriatemark-localrop 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
-