auto import from //depot/cupcake/@135843
This commit is contained in:
204
emulator/qtools/opcode.cpp
Normal file
204
emulator/qtools/opcode.cpp
Normal file
@@ -0,0 +1,204 @@
|
||||
// Copyright 2006 The Android Open Source Project
|
||||
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
#include "opcode.h"
|
||||
|
||||
// Note: this array depends on the Opcode enum defined in opcode.h
|
||||
uint32_t opcode_flags[] = {
|
||||
0, // OP_INVALID
|
||||
0, // OP_UNDEFINED
|
||||
kCatAlu, // OP_ADC
|
||||
kCatAlu, // OP_ADD
|
||||
kCatAlu, // OP_AND
|
||||
kCatBranch, // OP_B
|
||||
kCatBranch | kCatBranchLink, // OP_BL
|
||||
kCatAlu, // OP_BIC
|
||||
0, // OP_BKPT
|
||||
kCatBranch | kCatBranchLink | kCatBranchExch, // OP_BLX
|
||||
kCatBranch | kCatBranchExch, // OP_BX
|
||||
kCatCoproc, // OP_CDP
|
||||
kCatAlu, // OP_CLZ
|
||||
kCatAlu, // OP_CMN
|
||||
kCatAlu, // OP_CMP
|
||||
kCatAlu, // OP_EOR
|
||||
kCatCoproc | kCatLoad, // OP_LDC
|
||||
kCatLoad | kCatMultiple, // OP_LDM
|
||||
kCatLoad | kCatWord, // OP_LDR
|
||||
kCatLoad | kCatByte, // OP_LDRB
|
||||
kCatLoad | kCatByte, // OP_LDRBT
|
||||
kCatLoad | kCatHalf, // OP_LDRH
|
||||
kCatLoad | kCatByte | kCatSigned, // OP_LDRSB
|
||||
kCatLoad | kCatHalf | kCatSigned, // OP_LDRSH
|
||||
kCatLoad | kCatWord, // OP_LDRT
|
||||
kCatCoproc, // OP_MCR
|
||||
kCatAlu, // OP_MLA
|
||||
kCatAlu, // OP_MOV
|
||||
kCatCoproc, // OP_MRC
|
||||
0, // OP_MRS
|
||||
0, // OP_MSR
|
||||
kCatAlu, // OP_MUL
|
||||
kCatAlu, // OP_MVN
|
||||
kCatAlu, // OP_ORR
|
||||
0, // OP_PLD
|
||||
kCatAlu, // OP_RSB
|
||||
kCatAlu, // OP_RSC
|
||||
kCatAlu, // OP_SBC
|
||||
kCatAlu, // OP_SMLAL
|
||||
kCatAlu, // OP_SMULL
|
||||
kCatCoproc | kCatStore, // OP_STC
|
||||
kCatStore | kCatMultiple, // OP_STM
|
||||
kCatStore | kCatWord, // OP_STR
|
||||
kCatStore | kCatByte, // OP_STRB
|
||||
kCatStore | kCatByte, // OP_STRBT
|
||||
kCatStore | kCatHalf, // OP_STRH
|
||||
kCatStore | kCatWord, // OP_STRT
|
||||
kCatAlu, // OP_SUB
|
||||
0, // OP_SWI
|
||||
kCatLoad | kCatStore, // OP_SWP
|
||||
kCatLoad | kCatStore | kCatByte, // OP_SWPB
|
||||
kCatAlu, // OP_TEQ
|
||||
kCatAlu, // OP_TST
|
||||
kCatAlu, // OP_UMLAL
|
||||
kCatAlu, // OP_UMULL
|
||||
|
||||
0, // OP_THUMB_UNDEFINED,
|
||||
kCatAlu, // OP_THUMB_ADC,
|
||||
kCatAlu, // OP_THUMB_ADD,
|
||||
kCatAlu, // OP_THUMB_AND,
|
||||
kCatAlu, // OP_THUMB_ASR,
|
||||
kCatBranch, // OP_THUMB_B,
|
||||
kCatAlu, // OP_THUMB_BIC,
|
||||
0, // OP_THUMB_BKPT,
|
||||
kCatBranch | kCatBranchLink, // OP_THUMB_BL,
|
||||
kCatBranch | kCatBranchLink | kCatBranchExch, // OP_THUMB_BLX,
|
||||
kCatBranch | kCatBranchExch, // OP_THUMB_BX,
|
||||
kCatAlu, // OP_THUMB_CMN,
|
||||
kCatAlu, // OP_THUMB_CMP,
|
||||
kCatAlu, // OP_THUMB_EOR,
|
||||
kCatLoad | kCatMultiple, // OP_THUMB_LDMIA,
|
||||
kCatLoad | kCatWord, // OP_THUMB_LDR,
|
||||
kCatLoad | kCatByte, // OP_THUMB_LDRB,
|
||||
kCatLoad | kCatHalf, // OP_THUMB_LDRH,
|
||||
kCatLoad | kCatByte | kCatSigned, // OP_THUMB_LDRSB,
|
||||
kCatLoad | kCatHalf | kCatSigned, // OP_THUMB_LDRSH,
|
||||
kCatAlu, // OP_THUMB_LSL,
|
||||
kCatAlu, // OP_THUMB_LSR,
|
||||
kCatAlu, // OP_THUMB_MOV,
|
||||
kCatAlu, // OP_THUMB_MUL,
|
||||
kCatAlu, // OP_THUMB_MVN,
|
||||
kCatAlu, // OP_THUMB_NEG,
|
||||
kCatAlu, // OP_THUMB_ORR,
|
||||
kCatLoad | kCatMultiple, // OP_THUMB_POP,
|
||||
kCatStore | kCatMultiple, // OP_THUMB_PUSH,
|
||||
kCatAlu, // OP_THUMB_ROR,
|
||||
kCatAlu, // OP_THUMB_SBC,
|
||||
kCatStore | kCatMultiple, // OP_THUMB_STMIA,
|
||||
kCatStore | kCatWord, // OP_THUMB_STR,
|
||||
kCatStore | kCatByte, // OP_THUMB_STRB,
|
||||
kCatStore | kCatHalf, // OP_THUMB_STRH,
|
||||
kCatAlu, // OP_THUMB_SUB,
|
||||
0, // OP_THUMB_SWI,
|
||||
kCatAlu, // OP_THUMB_TST,
|
||||
|
||||
0, // OP_END
|
||||
};
|
||||
|
||||
const char *opcode_names[] = {
|
||||
"invalid",
|
||||
"undefined",
|
||||
"adc",
|
||||
"add",
|
||||
"and",
|
||||
"b",
|
||||
"bl",
|
||||
"bic",
|
||||
"bkpt",
|
||||
"blx",
|
||||
"bx",
|
||||
"cdp",
|
||||
"clz",
|
||||
"cmn",
|
||||
"cmp",
|
||||
"eor",
|
||||
"ldc",
|
||||
"ldm",
|
||||
"ldr",
|
||||
"ldrb",
|
||||
"ldrbt",
|
||||
"ldrh",
|
||||
"ldrsb",
|
||||
"ldrsh",
|
||||
"ldrt",
|
||||
"mcr",
|
||||
"mla",
|
||||
"mov",
|
||||
"mrc",
|
||||
"mrs",
|
||||
"msr",
|
||||
"mul",
|
||||
"mvn",
|
||||
"orr",
|
||||
"pld",
|
||||
"rsb",
|
||||
"rsc",
|
||||
"sbc",
|
||||
"smlal",
|
||||
"smull",
|
||||
"stc",
|
||||
"stm",
|
||||
"str",
|
||||
"strb",
|
||||
"strbt",
|
||||
"strh",
|
||||
"strt",
|
||||
"sub",
|
||||
"swi",
|
||||
"swp",
|
||||
"swpb",
|
||||
"teq",
|
||||
"tst",
|
||||
"umlal",
|
||||
"umull",
|
||||
|
||||
"undefined",
|
||||
"adc",
|
||||
"add",
|
||||
"and",
|
||||
"asr",
|
||||
"b",
|
||||
"bic",
|
||||
"bkpt",
|
||||
"bl",
|
||||
"blx",
|
||||
"bx",
|
||||
"cmn",
|
||||
"cmp",
|
||||
"eor",
|
||||
"ldmia",
|
||||
"ldr",
|
||||
"ldrb",
|
||||
"ldrh",
|
||||
"ldrsb",
|
||||
"ldrsh",
|
||||
"lsl",
|
||||
"lsr",
|
||||
"mov",
|
||||
"mul",
|
||||
"mvn",
|
||||
"neg",
|
||||
"orr",
|
||||
"pop",
|
||||
"push",
|
||||
"ror",
|
||||
"sbc",
|
||||
"stmia",
|
||||
"str",
|
||||
"strb",
|
||||
"strh",
|
||||
"sub",
|
||||
"swi",
|
||||
"tst",
|
||||
|
||||
NULL
|
||||
};
|
||||
Reference in New Issue
Block a user