51 if (!
op || sz >=
len) {
82 ut32 vB = (data[1] & 0x0f);
83 ut32 vA = (data[1] & 0xf0) >> 4;
99 ut32 vB = (data[1] & 0x0f);
100 ut32 vA = (data[1] & 0xf0) >> 4;
124 int vA = (
int)data[1];
125 ut32 vB = (data[3] << 8) | data[2];
153 ut32 vB = (data[3] << 8) | data[2];
183 ut32 vA = (data[1] & 0x0f);
184 ut32 vB = (data[1] & 0xf0) >> 4;
192 ut32 vA = (data[1] & 0x0f);
193 ut32 vB = (data[1] & 0xf0) >> 4;
200 ut32 vA = (data[1] & 0x0f);
201 ut32 vB = (data[1] & 0xf0) >> 4;
208 esilprintf(
op,
"%d,instanceof,%d,-,!,v%d,=", vC, vB, vA);
250 ut32 vA = (data[1] & 0x0f);
251 ut32 vB = (data[1] & 0xf0) >> 4;
252 ut32 vC = (data[2] & 0x0f);
260 ut32 vA = (data[1] & 0x0f);
261 ut32 vB = (data[1] & 0xf0) >> 4;
262 ut32 vC = (data[2] & 0x0f);
263 const char *vT =
"-boolean";
271 ut32 vC =
len > 3 ? (data[3] << 8) | data[2] : 0;
274 ut32 vA = (data[1] & 0x0f);
308 ut32 vC =
len > 3 ? (data[3] << 8) | data[2] : 0;
312 ut32 vA = (data[1] & 0x0f);
333 ut32 vA = (data[1] & 0x0f);
334 ut32 vB = (data[1] & 0xf0) >> 4;
335 ut32 vC = (data[2] << 8) | data[3];
405 if (data[0] == 0x0e) {
409 esilprintf(
op,
"sp,[8],ip,=,8,sp,+=,8,sp,-=,v%d,sp,=[8]", vA);
415 st32 rel = (
signed char)data[1];
416 op->jump =
addr + (rel * 2);
425 st32 rel = (short)(data[3] << 8 | data[2]);
426 op->jump =
addr + (rel * 2);
435 st32 rel = (
st32)(data[2] | (data[3] << 8) | (data[4] << 16) | (data[5] << 24));
436 op->jump =
addr + (rel * 2);
473 int rel = (
int)(data[3] << 8 | data[2]);
474 op->jump =
addr + (rel * 2);
480 esilprintf(
op,
"v%d,v%d,==,%s,?{,%" PFMT64d ",ip,=}", vB, vA,
cond,
op->jump);
492 int rel = (
int)(data[3] << 8 | data[2]);
493 op->jump =
addr + (rel * 2);
536 ut32 vB = (data[3] << 8) | data[2];
546 esilprintf(
op,
"8,sp,-=,0x%" PFMT64x ",sp,=[8],0x%" PFMT64x ",ip,=",
op->fail,
op->jump);
559 ut32 vB = (data[3] << 8) | data[2];
568 esilprintf(
op,
"8,sp,-=,0x%" PFMT64x ",sp,=[8],0x%" PFMT64x ",ip,=",
op->fail,
op->jump);
594 int vB = (data[3] << 8) | data[2];
598 int vA = (
int)data[1];
607 ut32 vA = (data[1] & 0x0f);
608 ut32 vB = (data[1] & 0xf0) >> 4;
609 ut32 vC = (
int)data[2] | (data[3] << 8);
620 int vB = (data[3] << 8) | data[2];
644 ut32 vB = (data[1] & 0x0f);
645 ut32 vA = (data[1] & 0xf0) >> 4;
682 ut32 vA = (data[1] & 0x0f);
683 ut32 vB = (data[1] & 0xf0) >> 4;
684 ut32 vC = (data[2] << 8) | data[3];
699 len >
op->size && data[
op->size] == 0x0d) {
static const char * getCondz(ut8 cond)
static const char * getCond(ut8 cond)
static const struct dalvik_opcodes_t dalvik_opcodes[256]
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
#define esilprintf(op, fmt,...)
@ RZ_ANALYSIS_OP_FAMILY_FPU
#define RZ_ANALYSIS_GET_OFFSET(x, y, z)
@ RZ_ANALYSIS_DATATYPE_STRING
@ RZ_ANALYSIS_DATATYPE_ARRAY
@ RZ_ANALYSIS_DATATYPE_CLASS
@ RZ_ANALYSIS_DATATYPE_BOOLEAN
@ RZ_ANALYSIS_DATATYPE_OBJECT
@ RZ_ANALYSIS_OP_MASK_DISASM
@ RZ_ANALYSIS_OP_MASK_ESIL
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_MUL
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_AND
@ RZ_ANALYSIS_OP_TYPE_MOD
@ RZ_ANALYSIS_OP_TYPE_SWI
@ RZ_ANALYSIS_OP_TYPE_TRAP
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_SWITCH
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_PUSH
@ RZ_ANALYSIS_OP_TYPE_SHR
@ RZ_ANALYSIS_OP_TYPE_POP
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_DIV
@ RZ_ANALYSIS_OP_TYPE_CAST
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_SHL
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_UCALL
@ RZ_ANALYSIS_OP_TYPE_NOT
@ RZ_ANALYSIS_OP_TYPE_RET
@ RZ_ANALYSIS_OP_TYPE_NOP
@ RZ_ANALYSIS_OP_TYPE_XOR
@ RZ_ANALYSIS_OP_TYPE_NEW
@ RZ_ANALYSIS_OP_TYPE_LENGTH
#define rz_warn_if_reached()
static ut32 rz_read_le32(const void *src)
#define cond(bop, top, mask, flags)
RzBinGetOffset get_offset
ut64(WINAPI *w32_GetEnabledXStateFeatures)()