diff --git a/src/arch/java.c b/src/arch/java.c index c2af640..07fa4ec 100644 --- a/src/arch/java.c +++ b/src/arch/java.c @@ -41,209 +41,209 @@ static ArchRegister _java_registers[] = #define OP_U32 AO_IMMEDIATE(0, 32, 0) static ArchInstruction _java_instructions[] = { - { "aaload", 0x32, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aastore", 0x53, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aconst_null",0x01, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aload", 0x19, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "aload_0", 0x2a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aload_1", 0x2b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aload_2", 0x2c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "aload_3", 0x2d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "areturn", 0xb0, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "arraylength",0xbe, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "astore", 0x3a, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "astore_0", 0x4b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "astore_1", 0x4c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "astore_2", 0x4d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "astore_3", 0x4e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "athrow", 0xbf, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "baload", 0x33, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "bastore", 0x54, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "bipush", 0x10, OP1F, OP_U32, AOT_NONE, AOT_NONE }, - { "caload", 0x34, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "castore", 0x55, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "checkcast", 0xc0, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "d2f", 0x90, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "d2i", 0x8e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "d2l", 0x8f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dadd", 0x63, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "daload", 0x31, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dastore", 0x52, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dcmpg", 0x98, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dcmpl", 0x97, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dconst_0", 0x0e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dconst_1", 0x0f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ddiv", 0x6f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dload", 0x18, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "dload_0", 0x26, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dload_1", 0x27, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dload_2", 0x28, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dload_3", 0x29, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dmul", 0x6b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dneg", 0x77, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "drem", 0x73, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dreturn", 0xaf, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dstore", 0x39, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "dstore_0", 0x47, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dstore_1", 0x48, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dstore_2", 0x49, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dstore_3", 0x4a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dsub", 0x67, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup", 0x59, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup_x1", 0x5a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup_x2", 0x5b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup2", 0x5c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup2_x1", 0x5d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "dup2_x2", 0x5e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "f2d", 0x8d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "f2i", 0x8b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "f2l", 0x8c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fadd", 0x62, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "faload", 0x30, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fastore", 0x51, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fcmpg", 0x96, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fcmpl", 0x95, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fconst_0", 0x0b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fconst_1", 0x0c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fconst_2", 0x0d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fdiv", 0x6e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fload", 0x17, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "fload_0", 0x22, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fload_1", 0x23, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fload_2", 0x24, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fload_3", 0x25, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fmul", 0x6a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fneg", 0x76, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "frem", 0x72, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "freturn", 0xae, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fstore_0", 0x43, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fstore_1", 0x44, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fstore_2", 0x45, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fstore_3", 0x46, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "fsub", 0x66, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "getfield", 0xb4, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "getstatic", 0xb2, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "goto", 0xa7, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "goto_w", 0xc8, OP1F, OP_U32, AOT_NONE, AOT_NONE }, - { "i2b", 0x91, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "i2c", 0x92, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "i2d", 0x87, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "i2f", 0x86, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "i2l", 0x85, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "i2s", 0x93, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iadd", 0x60, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iaload", 0x2e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iand", 0x7e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iastore", 0x4f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_m1", 0x02, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_0", 0x03, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_1", 0x04, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_2", 0x05, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_3", 0x06, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_4", 0x07, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iconst_5", 0x08, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "idiv", 0x6c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "if_acmpeq", 0xa5, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_acmpne", 0xa6, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmpeq", 0x9f, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmpne", 0xa0, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmplt", 0xa1, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmpge", 0xa2, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmpgt", 0xa3, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "if_icmple", 0xa4, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifeq", 0x99, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifne", 0x9a, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "iflt", 0x9b, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifge", 0x9c, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifgt", 0x9d, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifle", 0x9e, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifnonnull", 0xc7, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ifnull", 0xc6, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "iinc", 0x84, OP1F, OP_U8, OP_U8, AOT_NONE }, - { "iload", 0x15, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "iload_0", 0x1a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iload_1", 0x1b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iload_2", 0x1c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iload_3", 0x1d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "impdep1", 0xfe, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "impdep2", 0xff, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "imul", 0x68, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ineg", 0x74, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "instanceof", 0xc1, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "invokeinterface",0xb9,OP1F,OP_U16, OP_U8, AOT_NONE }, - { "invokespecial",0xb7, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "invokestatic",0xb8, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "invokevirtual",0xb6, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ior", 0x80, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "irem", 0x70, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ireturn", 0xac, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ishl", 0x78, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ishr", 0x7a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "istore", 0x36, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "istore_0", 0x3b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "istore_0", 0x3c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "istore_0", 0x3d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "istore_3", 0x3e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "isub", 0x64, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "iushr", 0x7c, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ixor", 0x82, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "jsr", 0xa8, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "jsr_w", 0xc9, OP1F, OP_U32, AOT_NONE, AOT_NONE }, - { "l2d", 0x8a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "l2f", 0x89, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "l2i", 0x88, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ladd", 0x61, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "laload", 0x2f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "land", 0x7f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lastore", 0x50, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lcmp", 0x94, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lconst_0", 0x09, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lconst_1", 0x0a, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "ldc", 0x12, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "ldc_w", 0x13, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ldc2_w", 0x14, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ldiv", 0x6d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lload", 0x16, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "lload_0", 0x1e, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lload_1", 0x1f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lload_2", 0x20, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lload_3", 0x21, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lmul", 0x69, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lneg", 0x75, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lor", 0x81, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lrem", 0x71, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lreturn", 0xad, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lookupswitch",0xab, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lshl", 0x79, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lshr", 0x7b, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lstore", 0x37, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "lstore_0", 0x3f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lstore_1", 0x40, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lstore_2", 0x41, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lstore_3", 0x42, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lsub", 0x65, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lushr", 0x7d, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "lxor", 0x83, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "monitorenter",0xc2, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "monitorexit",0xc3, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "multianewarray",0xc5,OP1F, OP_U16, OP_U8, AOT_NONE }, - { "new", 0xbb, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "newarray", 0xbb, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "nop", 0x00, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "pop", 0x57, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "pop2", 0x58, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "putfield", 0xb5, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "putstatic", 0xb3, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "ret", 0xa9, OP1F, OP_U8, AOT_NONE, AOT_NONE }, - { "return", 0xb1, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "saload", 0x35, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "sastore", 0x56, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "sipush", 0x11, OP1F, OP_U16, AOT_NONE, AOT_NONE }, - { "swap", 0x5f, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "tableswitch",0xaa, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, - { "wide", 0xc4, OP1F, OP_U8, OP_U16, AOT_NONE }, - { "wide", 0xc4, OP1F, OP_U8, OP_U8, OP_U16 }, - { "xxxunusedxxx",0xba, OP1F, AOT_NONE, AOT_NONE, AOT_NONE }, + { "aaload", 0x32, OP1F, AO_0() }, + { "aastore", 0x53, OP1F, AO_0() }, + { "aconst_null",0x01, OP1F, AO_0() }, + { "aload", 0x19, OP1F, AO_1(OP_U8) }, + { "aload_0", 0x2a, OP1F, AO_0() }, + { "aload_1", 0x2b, OP1F, AO_0() }, + { "aload_2", 0x2c, OP1F, AO_0() }, + { "aload_3", 0x2d, OP1F, AO_0() }, + { "areturn", 0xb0, OP1F, AO_0() }, + { "arraylength",0xbe, OP1F, AO_0() }, + { "astore", 0x3a, OP1F, AO_1(OP_U8) }, + { "astore_0", 0x4b, OP1F, AO_0() }, + { "astore_1", 0x4c, OP1F, AO_0() }, + { "astore_2", 0x4d, OP1F, AO_0() }, + { "astore_3", 0x4e, OP1F, AO_0() }, + { "athrow", 0xbf, OP1F, AO_0() }, + { "baload", 0x33, OP1F, AO_0() }, + { "bastore", 0x54, OP1F, AO_0() }, + { "bipush", 0x10, OP1F, AO_1(OP_U32) }, + { "caload", 0x34, OP1F, AO_0() }, + { "castore", 0x55, OP1F, AO_0() }, + { "checkcast", 0xc0, OP1F, AO_1(OP_U16) }, + { "d2f", 0x90, OP1F, AO_0() }, + { "d2i", 0x8e, OP1F, AO_0() }, + { "d2l", 0x8f, OP1F, AO_0() }, + { "dadd", 0x63, OP1F, AO_0() }, + { "daload", 0x31, OP1F, AO_0() }, + { "dastore", 0x52, OP1F, AO_0() }, + { "dcmpg", 0x98, OP1F, AO_0() }, + { "dcmpl", 0x97, OP1F, AO_0() }, + { "dconst_0", 0x0e, OP1F, AO_0() }, + { "dconst_1", 0x0f, OP1F, AO_0() }, + { "ddiv", 0x6f, OP1F, AO_0() }, + { "dload", 0x18, OP1F, AO_1(OP_U8) }, + { "dload_0", 0x26, OP1F, AO_0() }, + { "dload_1", 0x27, OP1F, AO_0() }, + { "dload_2", 0x28, OP1F, AO_0() }, + { "dload_3", 0x29, OP1F, AO_0() }, + { "dmul", 0x6b, OP1F, AO_0() }, + { "dneg", 0x77, OP1F, AO_0() }, + { "drem", 0x73, OP1F, AO_0() }, + { "dreturn", 0xaf, OP1F, AO_0() }, + { "dstore", 0x39, OP1F, AO_1(OP_U8) }, + { "dstore_0", 0x47, OP1F, AO_0() }, + { "dstore_1", 0x48, OP1F, AO_0() }, + { "dstore_2", 0x49, OP1F, AO_0() }, + { "dstore_3", 0x4a, OP1F, AO_0() }, + { "dsub", 0x67, OP1F, AO_0() }, + { "dup", 0x59, OP1F, AO_0() }, + { "dup_x1", 0x5a, OP1F, AO_0() }, + { "dup_x2", 0x5b, OP1F, AO_0() }, + { "dup2", 0x5c, OP1F, AO_0() }, + { "dup2_x1", 0x5d, OP1F, AO_0() }, + { "dup2_x2", 0x5e, OP1F, AO_0() }, + { "f2d", 0x8d, OP1F, AO_0() }, + { "f2i", 0x8b, OP1F, AO_0() }, + { "f2l", 0x8c, OP1F, AO_0() }, + { "fadd", 0x62, OP1F, AO_0() }, + { "faload", 0x30, OP1F, AO_0() }, + { "fastore", 0x51, OP1F, AO_0() }, + { "fcmpg", 0x96, OP1F, AO_0() }, + { "fcmpl", 0x95, OP1F, AO_0() }, + { "fconst_0", 0x0b, OP1F, AO_0() }, + { "fconst_1", 0x0c, OP1F, AO_0() }, + { "fconst_2", 0x0d, OP1F, AO_0() }, + { "fdiv", 0x6e, OP1F, AO_0() }, + { "fload", 0x17, OP1F, AO_1(OP_U8) }, + { "fload_0", 0x22, OP1F, AO_0() }, + { "fload_1", 0x23, OP1F, AO_0() }, + { "fload_2", 0x24, OP1F, AO_0() }, + { "fload_3", 0x25, OP1F, AO_0() }, + { "fmul", 0x6a, OP1F, AO_0() }, + { "fneg", 0x76, OP1F, AO_0() }, + { "frem", 0x72, OP1F, AO_0() }, + { "freturn", 0xae, OP1F, AO_0() }, + { "fstore_0", 0x43, OP1F, AO_0() }, + { "fstore_1", 0x44, OP1F, AO_0() }, + { "fstore_2", 0x45, OP1F, AO_0() }, + { "fstore_3", 0x46, OP1F, AO_0() }, + { "fsub", 0x66, OP1F, AO_0() }, + { "getfield", 0xb4, OP1F, AO_1(OP_U16) }, + { "getstatic", 0xb2, OP1F, AO_1(OP_U16) }, + { "goto", 0xa7, OP1F, AO_1(OP_U16) }, + { "goto_w", 0xc8, OP1F, AO_1(OP_U32) }, + { "i2b", 0x91, OP1F, AO_0() }, + { "i2c", 0x92, OP1F, AO_0() }, + { "i2d", 0x87, OP1F, AO_0() }, + { "i2f", 0x86, OP1F, AO_0() }, + { "i2l", 0x85, OP1F, AO_0() }, + { "i2s", 0x93, OP1F, AO_0() }, + { "iadd", 0x60, OP1F, AO_0() }, + { "iaload", 0x2e, OP1F, AO_0() }, + { "iand", 0x7e, OP1F, AO_0() }, + { "iastore", 0x4f, OP1F, AO_0() }, + { "iconst_m1", 0x02, OP1F, AO_0() }, + { "iconst_0", 0x03, OP1F, AO_0() }, + { "iconst_1", 0x04, OP1F, AO_0() }, + { "iconst_2", 0x05, OP1F, AO_0() }, + { "iconst_3", 0x06, OP1F, AO_0() }, + { "iconst_4", 0x07, OP1F, AO_0() }, + { "iconst_5", 0x08, OP1F, AO_0() }, + { "idiv", 0x6c, OP1F, AO_0() }, + { "if_acmpeq", 0xa5, OP1F, AO_1(OP_U16) }, + { "if_acmpne", 0xa6, OP1F, AO_1(OP_U16) }, + { "if_icmpeq", 0x9f, OP1F, AO_1(OP_U16) }, + { "if_icmpne", 0xa0, OP1F, AO_1(OP_U16) }, + { "if_icmplt", 0xa1, OP1F, AO_1(OP_U16) }, + { "if_icmpge", 0xa2, OP1F, AO_1(OP_U16) }, + { "if_icmpgt", 0xa3, OP1F, AO_1(OP_U16) }, + { "if_icmple", 0xa4, OP1F, AO_1(OP_U16) }, + { "ifeq", 0x99, OP1F, AO_1(OP_U16) }, + { "ifne", 0x9a, OP1F, AO_1(OP_U16) }, + { "iflt", 0x9b, OP1F, AO_1(OP_U16) }, + { "ifge", 0x9c, OP1F, AO_1(OP_U16) }, + { "ifgt", 0x9d, OP1F, AO_1(OP_U16) }, + { "ifle", 0x9e, OP1F, AO_1(OP_U16) }, + { "ifnonnull", 0xc7, OP1F, AO_1(OP_U16) }, + { "ifnull", 0xc6, OP1F, AO_1(OP_U16) }, + { "iinc", 0x84, OP1F, AO_2(OP_U8, OP_U8) }, + { "iload", 0x15, OP1F, AO_1(OP_U8) }, + { "iload_0", 0x1a, OP1F, AO_0() }, + { "iload_1", 0x1b, OP1F, AO_0() }, + { "iload_2", 0x1c, OP1F, AO_0() }, + { "iload_3", 0x1d, OP1F, AO_0() }, + { "impdep1", 0xfe, OP1F, AO_0() }, + { "impdep2", 0xff, OP1F, AO_0() }, + { "imul", 0x68, OP1F, AO_0() }, + { "ineg", 0x74, OP1F, AO_0() }, + { "instanceof", 0xc1, OP1F, AO_1(OP_U16) }, + { "invokeinterface",0xb9,OP1F,AO_2(OP_U16, OP_U8) }, + { "invokespecial",0xb7, OP1F, AO_1(OP_U16) }, + { "invokestatic",0xb8, OP1F, AO_1(OP_U16) }, + { "invokevirtual",0xb6, OP1F, AO_1(OP_U16) }, + { "ior", 0x80, OP1F, AO_0() }, + { "irem", 0x70, OP1F, AO_0() }, + { "ireturn", 0xac, OP1F, AO_0() }, + { "ishl", 0x78, OP1F, AO_0() }, + { "ishr", 0x7a, OP1F, AO_0() }, + { "istore", 0x36, OP1F, AO_1(OP_U8) }, + { "istore_0", 0x3b, OP1F, AO_0() }, + { "istore_0", 0x3c, OP1F, AO_0() }, + { "istore_0", 0x3d, OP1F, AO_0() }, + { "istore_3", 0x3e, OP1F, AO_0() }, + { "isub", 0x64, OP1F, AO_0() }, + { "iushr", 0x7c, OP1F, AO_0() }, + { "ixor", 0x82, OP1F, AO_0() }, + { "jsr", 0xa8, OP1F, AO_1(OP_U16) }, + { "jsr_w", 0xc9, OP1F, AO_1(OP_U32) }, + { "l2d", 0x8a, OP1F, AO_0() }, + { "l2f", 0x89, OP1F, AO_0() }, + { "l2i", 0x88, OP1F, AO_0() }, + { "ladd", 0x61, OP1F, AO_0() }, + { "laload", 0x2f, OP1F, AO_0() }, + { "land", 0x7f, OP1F, AO_0() }, + { "lastore", 0x50, OP1F, AO_0() }, + { "lcmp", 0x94, OP1F, AO_0() }, + { "lconst_0", 0x09, OP1F, AO_0() }, + { "lconst_1", 0x0a, OP1F, AO_0() }, + { "ldc", 0x12, OP1F, AO_1(OP_U8) }, + { "ldc_w", 0x13, OP1F, AO_1(OP_U16) }, + { "ldc2_w", 0x14, OP1F, AO_1(OP_U16) }, + { "ldiv", 0x6d, OP1F, AO_0() }, + { "lload", 0x16, OP1F, AO_1(OP_U8) }, + { "lload_0", 0x1e, OP1F, AO_0() }, + { "lload_1", 0x1f, OP1F, AO_0() }, + { "lload_2", 0x20, OP1F, AO_0() }, + { "lload_3", 0x21, OP1F, AO_0() }, + { "lmul", 0x69, OP1F, AO_0() }, + { "lneg", 0x75, OP1F, AO_0() }, + { "lor", 0x81, OP1F, AO_0() }, + { "lrem", 0x71, OP1F, AO_0() }, + { "lreturn", 0xad, OP1F, AO_0() }, + { "lookupswitch",0xab, OP1F, AO_0() }, + { "lshl", 0x79, OP1F, AO_0() }, + { "lshr", 0x7b, OP1F, AO_0() }, + { "lstore", 0x37, OP1F, AO_1(OP_U8) }, + { "lstore_0", 0x3f, OP1F, AO_0() }, + { "lstore_1", 0x40, OP1F, AO_0() }, + { "lstore_2", 0x41, OP1F, AO_0() }, + { "lstore_3", 0x42, OP1F, AO_0() }, + { "lsub", 0x65, OP1F, AO_0() }, + { "lushr", 0x7d, OP1F, AO_0() }, + { "lxor", 0x83, OP1F, AO_0() }, + { "monitorenter",0xc2, OP1F, AO_0() }, + { "monitorexit",0xc3, OP1F, AO_0() }, + { "multianewarray",0xc5,OP1F, AO_2(OP_U16, OP_U8) }, + { "new", 0xbb, OP1F, AO_1(OP_U16) }, + { "newarray", 0xbb, OP1F, AO_1(OP_U8) }, + { "nop", 0x00, OP1F, AO_0() }, + { "pop", 0x57, OP1F, AO_0() }, + { "pop2", 0x58, OP1F, AO_0() }, + { "putfield", 0xb5, OP1F, AO_1(OP_U16) }, + { "putstatic", 0xb3, OP1F, AO_1(OP_U16) }, + { "ret", 0xa9, OP1F, AO_1(OP_U8) }, + { "return", 0xb1, OP1F, AO_0() }, + { "saload", 0x35, OP1F, AO_0() }, + { "sastore", 0x56, OP1F, AO_0() }, + { "sipush", 0x11, OP1F, AO_1(OP_U16) }, + { "swap", 0x5f, OP1F, AO_0() }, + { "tableswitch",0xaa, OP1F, AO_0() }, + { "wide", 0xc4, OP1F, AO_2(OP_U8, OP_U16) }, + { "wide", 0xc4, OP1F, AO_3(OP_U8, OP_U8, OP_U16) }, + { "xxxunusedxxx",0xba, OP1F, AO_0() }, #include "common.ins" #include "null.ins" }; diff --git a/src/arch/sparc.ins b/src/arch/sparc.ins index 757fabf..f2d361d 100644 --- a/src/arch/sparc.ins +++ b/src/arch/sparc.ins @@ -115,84 +115,84 @@ /* instructions */ -{ "add", OPIA1(add), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "add", OPIA2(add), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "addcc", OPIA1(addcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "addcc", OPIA2(addcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "and", OPIA1(and), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "and", OPIA2(and), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "andcc", OPIA1(andcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "andcc", OPIA2(andcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "andn", OPIA1(andn), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "andn", OPIA2(andn), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "andncc", OPIA1(andncc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "andncc", OPIA2(andncc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "ba", OPCB(ba), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "be", OPCB(be), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bg", OPCB(bg), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bge", OPCB(bge), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bgeu", OPCB(bgeu), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bl", OPCB(bl), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "ble", OPCB(ble), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "blu", OPCB(blu), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bn", OPCB(bn), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bne", OPCB(bne), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bneg", OPCB(bneg), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bnz", OPCB(bnz), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "bz", OPCB(bz), OPCBF, OPCB_U22, AOT_NONE, AOT_NONE }, -{ "ld", OPLS1(ld), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE }, -{ "ld", OPLS1(ld), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "ldd", OPLS1(ldd), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE }, -{ "ldd", OPLS1(ldd), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "ldsb", OPLS1(ldsb), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE }, -{ "ldsb", OPLS1(ldsb), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "ldsh", OPLS1(ldsh), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE }, -{ "ldsh", OPLS1(ldsh), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "ldub", OPLS1(ldub), OPLS1F, OPLS_RS1D, OP_RD, AOT_NONE }, -{ "ldub", OPLS1(ldub), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "lduh", OPLS1(lduh), OPLS1F, OPLS_RS1, OP_RD, AOT_NONE }, -{ "lduh", OPLS1(lduh), OPLS1F, OPLS_RS12,OP_RD, AOT_NONE }, -{ "nop", OPSH(sethi), OPSHF, AOT_NONE, AOT_NONE, AOT_NONE }, -{ "or", OPIA1(or), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "or", OPIA2(or), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "orcc", OPIA1(orcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "orcc", OPIA2(orcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "orn", OPIA1(orn), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "orn", OPIA2(orn), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "orncc", OPIA1(orncc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "orncc", OPIA2(orncc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "sdiv", OPIA1(sdiv), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "sdiv", OPIA2(sdiv), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "sdivcc", OPIA1(sdivcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "sdivcc", OPIA2(sdivcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "sethi", OPSH(sethi), OPSHF, OPSH_U21, OP_RD, AOT_NONE }, -{ "smul", OPIA1(smul), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "smul", OPIA2(smul), OPIA2F, OPIA_RS1, OPIA_S12, OP_RD }, -{ "smulcc", OPIA1(smulcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "smulcc", OPIA2(smulcc), OPIA2F, OPIA_RS1, OPIA_S12, OP_RD }, -{ "st", OPLS1(st), OPLS1F, OP_RD, OPLS_RS1, AOT_NONE }, -{ "st", OPLS1(st), OPLS1F, OP_RD, OPLS_RS12,AOT_NONE }, -{ "stb", OPLS1(stb), OPLS1F, OP_RD, OPLS_RS1, AOT_NONE }, -{ "stb", OPLS1(stb), OPLS1F, OP_RD, OPLS_RS12,AOT_NONE }, -{ "std", OPLS1(std), OPLS1F, OP_RD, OPLS_RS1, AOT_NONE }, -{ "std", OPLS1(std), OPLS1F, OP_RD, OPLS_RS12,AOT_NONE }, -{ "sth", OPLS1(sth), OPLS1F, OP_RD, OPLS_RS1, AOT_NONE }, -{ "sth", OPLS1(sth), OPLS1F, OP_RD, OPLS_RS12,AOT_NONE }, -{ "sub", OPIA1(sub), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "subcc", OPIA1(subcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "udiv", OPIA1(udiv), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "udiv", OPIA2(udiv), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "udivcc", OPIA1(udivcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "udivcc", OPIA2(udivcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "umul", OPIA1(umul), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "umul", OPIA2(umul), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "umulcc", OPIA1(umulcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "umulcc", OPIA2(umulcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "xnor", OPIA1(xnor), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "xnor", OPIA2(xnor), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "xnorcc", OPIA1(xnorcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "xnorcc", OPIA2(xnorcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "xor", OPIA1(xor), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "xor", OPIA2(xor), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, -{ "xorcc", OPIA1(xorcc), OPIA1F, OPIA_RS1, OPIA_RS2, OP_RD }, -{ "xorcc", OPIA2(xorcc), OPIA2F, OPIA_RS1, OPIA_U12, OP_RD }, +{ "add", OPIA1(add), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "add", OPIA2(add), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "addcc", OPIA1(addcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "addcc", OPIA2(addcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "and", OPIA1(and), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "and", OPIA2(and), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "andcc", OPIA1(andcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "andcc", OPIA2(andcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "andn", OPIA1(andn), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "andn", OPIA2(andn), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "andncc", OPIA1(andncc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "andncc", OPIA2(andncc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "ba", OPCB(ba), OPCBF, AO_1(OPCB_U22) }, +{ "be", OPCB(be), OPCBF, AO_1(OPCB_U22) }, +{ "bg", OPCB(bg), OPCBF, AO_1(OPCB_U22) }, +{ "bge", OPCB(bge), OPCBF, AO_1(OPCB_U22) }, +{ "bgeu", OPCB(bgeu), OPCBF, AO_1(OPCB_U22) }, +{ "bl", OPCB(bl), OPCBF, AO_1(OPCB_U22) }, +{ "ble", OPCB(ble), OPCBF, AO_1(OPCB_U22) }, +{ "blu", OPCB(blu), OPCBF, AO_1(OPCB_U22) }, +{ "bn", OPCB(bn), OPCBF, AO_1(OPCB_U22) }, +{ "bne", OPCB(bne), OPCBF, AO_1(OPCB_U22) }, +{ "bneg", OPCB(bneg), OPCBF, AO_1(OPCB_U22) }, +{ "bnz", OPCB(bnz), OPCBF, AO_1(OPCB_U22) }, +{ "bz", OPCB(bz), OPCBF, AO_1(OPCB_U22) }, +{ "ld", OPLS1(ld), OPLS1F, AO_2(OPLS_RS1, OP_RD) }, +{ "ld", OPLS1(ld), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "ldd", OPLS1(ldd), OPLS1F, AO_2(OPLS_RS1, OP_RD) }, +{ "ldd", OPLS1(ldd), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "ldsb", OPLS1(ldsb), OPLS1F, AO_2(OPLS_RS1, OP_RD) }, +{ "ldsb", OPLS1(ldsb), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "ldsh", OPLS1(ldsh), OPLS1F, AO_2(OPLS_RS1, OP_RD) }, +{ "ldsh", OPLS1(ldsh), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "ldub", OPLS1(ldub), OPLS1F, AO_2(OPLS_RS1D, OP_RD) }, +{ "ldub", OPLS1(ldub), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "lduh", OPLS1(lduh), OPLS1F, AO_2(OPLS_RS1,OP_RD) }, +{ "lduh", OPLS1(lduh), OPLS1F, AO_2(OPLS_RS12, OP_RD) }, +{ "nop", OPSH(sethi), OPSHF, AO_0() }, +{ "or", OPIA1(or), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "or", OPIA2(or), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "orcc", OPIA1(orcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "orcc", OPIA2(orcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "orn", OPIA1(orn), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "orn", OPIA2(orn), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "orncc", OPIA1(orncc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "orncc", OPIA2(orncc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "sdiv", OPIA1(sdiv), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "sdiv", OPIA2(sdiv), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "sdivcc", OPIA1(sdivcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "sdivcc", OPIA2(sdivcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "sethi", OPSH(sethi), OPSHF, AO_2(OPSH_U21, OP_RD) }, +{ "smul", OPIA1(smul), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "smul", OPIA2(smul), OPIA2F, AO_3(OPIA_RS1, OPIA_S12, OP_RD) }, +{ "smulcc", OPIA1(smulcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "smulcc", OPIA2(smulcc), OPIA2F, AO_3(OPIA_RS1, OPIA_S12, OP_RD) }, +{ "st", OPLS1(st), OPLS1F, AO_2(OP_RD, OPLS_RS1) }, +{ "st", OPLS1(st), OPLS1F, AO_2(OP_RD, OPLS_RS12) }, +{ "stb", OPLS1(stb), OPLS1F, AO_2(OP_RD, OPLS_RS1) }, +{ "stb", OPLS1(stb), OPLS1F, AO_2(OP_RD, OPLS_RS12) }, +{ "std", OPLS1(std), OPLS1F, AO_2(OP_RD, OPLS_RS1) }, +{ "std", OPLS1(std), OPLS1F, AO_2(OP_RD, OPLS_RS12) }, +{ "sth", OPLS1(sth), OPLS1F, AO_2(OP_RD, OPLS_RS1) }, +{ "sth", OPLS1(sth), OPLS1F, AO_2(OP_RD, OPLS_RS12) }, +{ "sub", OPIA1(sub), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "subcc", OPIA1(subcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "udiv", OPIA1(udiv), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "udiv", OPIA2(udiv), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "udivcc", OPIA1(udivcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "udivcc", OPIA2(udivcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "umul", OPIA1(umul), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "umul", OPIA2(umul), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "umulcc", OPIA1(umulcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "umulcc", OPIA2(umulcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "xnor", OPIA1(xnor), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "xnor", OPIA2(xnor), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "xnorcc", OPIA1(xnorcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "xnorcc", OPIA2(xnorcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "xor", OPIA1(xor), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "xor", OPIA2(xor), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) }, +{ "xorcc", OPIA1(xorcc), OPIA1F, AO_3(OPIA_RS1, OPIA_RS2, OP_RD) }, +{ "xorcc", OPIA2(xorcc), OPIA2F, AO_3(OPIA_RS1, OPIA_U12, OP_RD) },