array operations for each type
type | new array | set element | get element |
int | size visitIntInsn(NEWARRAY, T_INT) | arrayref index value IASTORE | arrayref index IALOAD |
boolean | size visitIntInsn(NEWARRAY,T_BOOLEAN) | arrayref index value BASTORE | arrayref index BALOAD |
byte | size visitIntInsn(NEWARRAY,T_BTYE) | arrayef index value BASTORE | arrayref index BALOAD |
short | size visitIntInsn(NEWARRAY,T_SHORT) | arrayef index value SASTORE | arrayref index SALOAD |
char | size visitIntInsn(NEWARRAY,T_CHAR) | arrayref index value CASTORE | arrayref index CALOAD |
long | size visitIntInsn(NEWARRAY,T_LONG) | arrayref index value LASTORE | arrayref index LALOAD |
float | size visitIntInsn(NEWARRAY,T_FLOAT) | arrayref index value FASTORE | arrayref index FALOAD |
double | size visitIntInsn(NEWARRAY,T_DOUBLE) | arrayref index valaue DASTORE | arrayref index DALOAD |
Object | size visitIntInsn(ANEWARRAY,"java/lang/Object") | arrayref index value AASTORE | arrayref index AALOAD |
boolean array - java code
boolean booleanA[]=new boolean[2];
booleanA[0]=true;
booleanA[1]=false;
boolean bool1=booleanA[0];
boolean array - asm code
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_BOOLEAN);
mv.visitVarInsn(ASTORE, 1);
mv.visitVarInsn(ALOAD, 1);
mv.visitInsn(ICONST_0);
mv.visitInsn(ICONST_1);
mv.visitInsn(BASTORE);
mv.visitVarInsn(ALOAD, 1);
mv.visitInsn(ICONST_1);
mv.visitInsn(ICONST_0);
mv.visitInsn(BASTORE);
mv.visitVarInsn(ALOAD, 1);
mv.visitInsn(ICONST_0);
mv.visitInsn(BALOAD);
mv.visitVarInsn(ISTORE, 2);
short array - java source
byte byteA[]=new byte[2];
byteA[0]=10;
byteA[1]=20;
byte byte1=byteA[0];
short array - asm bytecode generating code
//short array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_SHORT);
mv.visitVarInsn(ASTORE, 5);
mv.visitVarInsn(ALOAD, 5);
mv.visitInsn(ICONST_0);
mv.visitIntInsn(BIPUSH, 100);
mv.visitInsn(SASTORE);
mv.visitVarInsn(ALOAD, 5);
mv.visitInsn(ICONST_1);
mv.visitIntInsn(SIPUSH, 200);
mv.visitInsn(SASTORE);
mv.visitVarInsn(ALOAD, 5);
mv.visitInsn(ICONST_0);
mv.visitInsn(SALOAD);
mv.visitVarInsn(ISTORE, 6);
char array - java source
short shortA[]=new short[2];
shortA[0]=100;
shortA[1]=200;
short short1=shortA[0];
char array
//char array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_CHAR);
mv.visitVarInsn(ASTORE, 7);
mv.visitVarInsn(ALOAD, 7);
mv.visitInsn(ICONST_0);
mv.visitIntInsn(BIPUSH, 65);
mv.visitInsn(CASTORE);
mv.visitVarInsn(ALOAD, 7);
mv.visitInsn(ICONST_1);
mv.visitIntInsn(BIPUSH, 66);
mv.visitInsn(CASTORE);
mv.visitVarInsn(ALOAD, 7);
mv.visitInsn(ICONST_0);
mv.visitInsn(CALOAD);
mv.visitVarInsn(ISTORE, 8);
int array - java source
int intA[]=new int[2];
intA[0]=1024;
intA[1]=2048;
int int1=intA[0];
int array
//int array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_INT);
mv.visitVarInsn(ASTORE, 9);
mv.visitVarInsn(ALOAD, 9);
mv.visitInsn(ICONST_0);
mv.visitIntInsn(SIPUSH, 1024);
mv.visitInsn(IASTORE);
mv.visitVarInsn(ALOAD, 9);
mv.visitInsn(ICONST_1);
mv.visitIntInsn(SIPUSH, 2048);
mv.visitInsn(IASTORE);
mv.visitVarInsn(ALOAD, 9);
mv.visitInsn(ICONST_0);
mv.visitInsn(IALOAD);
mv.visitVarInsn(ISTORE, 10);
long array - java source
long longA[]=new long[2];
longA[0]=123;
longA[1]=456;
long long1=longA[0];
long array
//long array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_LONG);
mv.visitVarInsn(ASTORE, 11);
mv.visitVarInsn(ALOAD, 11);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn(new Long(123L));
mv.visitInsn(LASTORE);
mv.visitVarInsn(ALOAD, 11);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn(new Long(456L));
mv.visitInsn(LASTORE);
mv.visitVarInsn(ALOAD, 11);
mv.visitInsn(ICONST_0);
mv.visitInsn(LALOAD);
mv.visitVarInsn(LSTORE, 12);
float array - java source
float floatA[]=new float[2];
floatA[0]=10.1f;
floatA[1]=11.1f;
float float1=floatA[0];
float array
//float array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_FLOAT);
mv.visitVarInsn(ASTORE, 14);
mv.visitVarInsn(ALOAD, 14);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn(new Float("10.1"));
mv.visitInsn(FASTORE);
mv.visitVarInsn(ALOAD, 14);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn(new Float("11.1"));
mv.visitInsn(FASTORE);
mv.visitVarInsn(ALOAD, 14);
mv.visitInsn(ICONST_0);
mv.visitInsn(FALOAD);
mv.visitVarInsn(FSTORE, 15);
double array - java source
double doubleA[]=new double[2];
doubleA[0]=100.5;
doubleA[1]=200.2;
double double1=doubleA[0];
double array
//double array
mv.visitInsn(ICONST_2);
mv.visitIntInsn(NEWARRAY, T_DOUBLE);
mv.visitVarInsn(ASTORE, 16);
mv.visitVarInsn(ALOAD, 16);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn(new Double("100.5"));
mv.visitInsn(DASTORE);
mv.visitVarInsn(ALOAD, 16);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn(new Double("200.2"));
mv.visitInsn(DASTORE);
mv.visitVarInsn(ALOAD, 16);
mv.visitInsn(ICONST_0);
mv.visitInsn(DALOAD);
mv.visitVarInsn(DSTORE, 17);
object array - java source
Object objectA[]=new Object[2];
objectA[0]=new Object();
objectA[1]=new java.util.Date();
Object object1=objectA[1];
object array
//object array
mv.visitInsn(ICONST_2);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitVarInsn(ASTORE, 19);
mv.visitVarInsn(ALOAD, 19);
mv.visitInsn(ICONST_0);
mv.visitTypeInsn(NEW, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
mv.visitInsn(AASTORE);
mv.visitVarInsn(ALOAD, 19);
mv.visitInsn(ICONST_1);
mv.visitTypeInsn(NEW, "java/util/Date");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESPECIAL, "java/util/Date", "<init>", "()V");
mv.visitInsn(AASTORE);
mv.visitVarInsn(ALOAD, 19);
mv.visitInsn(ICONST_1);
mv.visitInsn(AALOAD);
mv.visitVarInsn(ASTORE, 20);