Rizin
unix-like reverse engineering framework and cli tools
|
#include <rz_analysis.h>
#include <capstone/capstone.h>
#include "arm_cs.h"
#include "arm_accessors64.h"
Go to the source code of this file.
Macros | |
#define | REG64(x) rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].reg)) |
#define | MEMBASE64(x) rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].mem.base)) |
#define | MEMINDEX64(x) rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].mem.index)) |
#define | EXT64(x) decode_sign_ext(insn->detail->arm64.operands[x].ext) |
#define | DECODE_SHIFT64(x) decode_shift_64(insn->detail->arm64.operands[x].shift.type) |
#define | REGSIZE64(x) regsize64(insn, x) |
#define | SHIFTED_REG64_APPEND(sb, n) shifted_reg64_append(sb, handle, insn, n) |
#define | OPCALL(opchar) arm64math(a, op, addr, buf, len, handle, insn, opchar, 0) |
#define | OPCALL_NEG(opchar) arm64math(a, op, addr, buf, len, handle, insn, opchar, 1) |
Functions | |
static int | arm64_reg_width (int reg) |
static int | decode_sign_ext (arm64_extender extender) |
static const char * | decode_shift_64 (arm64_shifter shift) |
static int | regsize64 (cs_insn *insn, int n) |
static void | shifted_reg64_append (RzStrBuf *sb, csh *handle, cs_insn *insn, int n) |
static void | arm64math (RzAnalysis *a, RzAnalysisOp *op, ut64 addr, const ut8 *buf, int len, csh *handle, cs_insn *insn, const char *opchar, int negate) |
RZ_IPI int | rz_arm_cs_analysis_op_64_esil (RzAnalysis *a, RzAnalysisOp *op, ut64 addr, const ut8 *buf, int len, csh *handle, cs_insn *insn) |
#define DECODE_SHIFT64 | ( | x | ) | decode_shift_64(insn->detail->arm64.operands[x].shift.type) |
Definition at line 103 of file arm_esil64.c.
#define EXT64 | ( | x | ) | decode_sign_ext(insn->detail->arm64.operands[x].ext) |
Definition at line 77 of file arm_esil64.c.
#define MEMBASE64 | ( | x | ) | rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].mem.base)) |
Definition at line 11 of file arm_esil64.c.
#define MEMINDEX64 | ( | x | ) | rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].mem.index)) |
Definition at line 12 of file arm_esil64.c.
Definition at line 168 of file arm_esil64.c.
Definition at line 169 of file arm_esil64.c.
#define REG64 | ( | x | ) | rz_str_get_null(cs_reg_name(*handle, insn->detail->arm64.operands[x].reg)) |
Definition at line 10 of file arm_esil64.c.
Definition at line 124 of file arm_esil64.c.
Definition at line 126 of file arm_esil64.c.
Definition at line 14 of file arm_esil64.c.
References ARM64_REG_W0, ARM64_REG_W1, ARM64_REG_W10, ARM64_REG_W11, ARM64_REG_W12, ARM64_REG_W13, ARM64_REG_W14, ARM64_REG_W15, ARM64_REG_W16, ARM64_REG_W17, ARM64_REG_W18, ARM64_REG_W19, ARM64_REG_W2, ARM64_REG_W20, ARM64_REG_W21, ARM64_REG_W22, ARM64_REG_W23, ARM64_REG_W24, ARM64_REG_W25, ARM64_REG_W26, ARM64_REG_W27, ARM64_REG_W28, ARM64_REG_W29, ARM64_REG_W3, ARM64_REG_W30, ARM64_REG_W4, ARM64_REG_W5, ARM64_REG_W6, ARM64_REG_W7, ARM64_REG_W8, ARM64_REG_W9, and reg.
Referenced by rz_arm_cs_analysis_op_64_esil().
|
static |
Definition at line 173 of file arm_esil64.c.
References EXT64, i2, IMM64, ISREG64, LSHIFT2_64, PFMT64d, r0, r1, r2, REG64, rz_strbuf_appendf(), rz_strbuf_setf(), SHIFTED_REG64_APPEND, and ut64().
|
static |
Definition at line 79 of file arm_esil64.c.
References ARM64_SFT_ASR, ARM64_SFT_LSL, ARM64_SFT_LSR, ARM64_SFT_MSL, ARM64_SFT_ROR, and shift().
|
static |
Definition at line 55 of file arm_esil64.c.
References ARM64_EXT_SXTB, ARM64_EXT_SXTH, ARM64_EXT_SXTW, ARM64_EXT_SXTX, ARM64_EXT_UXTB, ARM64_EXT_UXTH, ARM64_EXT_UXTW, and ARM64_EXT_UXTX.
Definition at line 105 of file arm_esil64.c.
References ARM64_REG_B0, ARM64_REG_B31, ARM64_REG_H0, ARM64_REG_H31, ARM64_REG_Q0, ARM64_REG_Q31, ARM64_REG_S0, ARM64_REG_S31, ARM64_REG_W0, ARM64_REG_W30, ARM64_REG_WZR, n, and reg.
RZ_IPI int rz_arm_cs_analysis_op_64_esil | ( | RzAnalysis * | a, |
RzAnalysisOp * | op, | ||
ut64 | addr, | ||
const ut8 * | buf, | ||
int | len, | ||
csh * | handle, | ||
cs_insn * | insn | ||
) |
Definition at line 202 of file arm_esil64.c.
References ARM64_INS_ADC, ARM64_INS_ADD, ARM64_INS_ADR, ARM64_INS_ADRP, ARM64_INS_AND, ARM64_INS_ASR, ARM64_INS_B, ARM64_INS_BFI, ARM64_INS_BFXIL, ARM64_INS_BIC, ARM64_INS_BL, ARM64_INS_BLR, ARM64_INS_BR, ARM64_INS_CBNZ, ARM64_INS_CBZ, ARM64_INS_CCMN, ARM64_INS_CCMP, ARM64_INS_CINC, ARM64_INS_CLZ, ARM64_INS_CMN, ARM64_INS_CMP, ARM64_INS_CSEL, ARM64_INS_CSET, ARM64_INS_CSINC, ARM64_INS_EON, ARM64_INS_EOR, ARM64_INS_ERET, ARM64_INS_EXTR, ARM64_INS_FCMP, ARM64_INS_FCSEL, ARM64_INS_FDIV, ARM64_INS_FMADD, ARM64_INS_LDAR, ARM64_INS_LDARB, ARM64_INS_LDARH, ARM64_INS_LDAXR, ARM64_INS_LDAXRB, ARM64_INS_LDAXRH, ARM64_INS_LDP, ARM64_INS_LDR, ARM64_INS_LDRB, ARM64_INS_LDRH, ARM64_INS_LDRSB, ARM64_INS_LDRSH, ARM64_INS_LDRSW, ARM64_INS_LDUR, ARM64_INS_LDURB, ARM64_INS_LDURH, ARM64_INS_LDURSB, ARM64_INS_LDURSH, ARM64_INS_LDURSW, ARM64_INS_LDXR, ARM64_INS_LDXRB, ARM64_INS_LDXRH, ARM64_INS_LSL, ARM64_INS_LSR, ARM64_INS_MADD, ARM64_INS_MNEG, ARM64_INS_MOV, ARM64_INS_MOVK, ARM64_INS_MOVN, ARM64_INS_MOVZ, ARM64_INS_MSUB, ARM64_INS_MUL, ARM64_INS_MVN, ARM64_INS_NEG, ARM64_INS_NEGS, ARM64_INS_NOP, ARM64_INS_ORN, ARM64_INS_ORR, ARM64_INS_RBIT, ARM64_INS_RET, ARM64_INS_REV, ARM64_INS_REV16, ARM64_INS_REV32, ARM64_INS_ROR, ARM64_INS_SBC, ARM64_INS_SBFIZ, ARM64_INS_SBFX, ARM64_INS_SDIV, ARM64_INS_SMADDL, ARM64_INS_SMULL, ARM64_INS_STNP, ARM64_INS_STP, ARM64_INS_STR, ARM64_INS_STRB, ARM64_INS_STRH, ARM64_INS_STUR, ARM64_INS_STURB, ARM64_INS_STURH, ARM64_INS_STXR, ARM64_INS_STXRB, ARM64_INS_STXRH, ARM64_INS_SUB, ARM64_INS_SVC, ARM64_INS_SXTB, ARM64_INS_SXTH, ARM64_INS_SXTW, ARM64_INS_TBNZ, ARM64_INS_TBZ, ARM64_INS_TST, ARM64_INS_UBFIZ, ARM64_INS_UBFX, ARM64_INS_UDIV, ARM64_INS_UMADDL, ARM64_INS_UMULL, ARM64_INS_UXTB, ARM64_INS_UXTH, arm64_reg_width(), bits(), DECODE_SHIFT64, EXT64, HASMEMINDEX64, i2, IMM64, int, ISIMM64, ISMEM64, ISPOSTINDEX64, ISPREINDEX64, ISREG64, LSHIFT2_64, mask, MEMBASE64, MEMDISP64, MEMINDEX64, NULL, OPCALL, OPCALL_NEG, OPCOUNT64, PFMT64d, PFMT64u, PFMT64x, r0, r1, r2, REG64, REGID64, REGSIZE64, rz_arm_cs_esil_prefix_cond(), rz_num_bitmask(), rz_strbuf_append(), rz_strbuf_appendf(), rz_strbuf_init(), rz_strbuf_set(), rz_strbuf_setf(), shift(), SHIFTED_REG64_APPEND, st64, ut64(), and val.
Referenced by analysis_op().
Definition at line 129 of file arm_esil64.c.
References ARM64_SFT_ASR, DECODE_SHIFT64, EXT64, HASMEMINDEX64, LSHIFT2_64, MEMINDEX64, n, PFMT64u, REG64, REGSIZE64, rz_num_bitmask(), rz_strbuf_appendf(), sb, and ut64().