Rizin
unix-like reverse engineering framework and cli tools
|
Go to the source code of this file.
Classes | |
struct | aarch64_field |
struct | aarch64_operand |
Macros | |
#define | OPD_F_HAS_INSERTER 0x00000001 |
#define | OPD_F_HAS_EXTRACTOR 0x00000002 |
#define | OPD_F_SIGN_EXT_T 0x00000004 /* Require sign-extension. */ |
#define | OPD_F_SHIFT_BY_2 |
#define | OPD_F_MAYBE_SP 0x00000010 /* May potentially be SP. */ |
#define | OPD_F_OD_MASK 0x000000e0 /* Operand-dependent data. */ |
#define | OPD_F_OD_LSB 5 |
#define | OPD_F_NO_ZR 0x00000100 /* ZR index not allowed. */ |
#define | F_DEPRECATED (1 << 0) /* Deprecated system register. */ |
#define | F_ARCHEXT (1 << 1) /* Architecture dependent system register. */ |
#define | F_HASXT |
#define | F_REG_READ |
#define | F_REG_WRITE |
Typedefs | |
typedef struct aarch64_field | aarch64_field |
typedef struct aarch64_operand | aarch64_operand |
Variables | |
const aarch64_field | fields [] |
const aarch64_operand | aarch64_operands [] |
#define F_ARCHEXT (1 << 1) /* Architecture dependent system register. */ |
Definition at line 207 of file aarch64-opc.h.
#define F_DEPRECATED (1 << 0) /* Deprecated system register. */ |
Definition at line 204 of file aarch64-opc.h.
#define F_HASXT |
Definition at line 210 of file aarch64-opc.h.
#define F_REG_READ |
Definition at line 213 of file aarch64-opc.h.
#define F_REG_WRITE |
Definition at line 216 of file aarch64-opc.h.
#define OPD_F_HAS_EXTRACTOR 0x00000002 |
Definition at line 193 of file aarch64-opc.h.
#define OPD_F_HAS_INSERTER 0x00000001 |
Definition at line 192 of file aarch64-opc.h.
#define OPD_F_MAYBE_SP 0x00000010 /* May potentially be SP. */ |
Definition at line 196 of file aarch64-opc.h.
#define OPD_F_NO_ZR 0x00000100 /* ZR index not allowed. */ |
Definition at line 199 of file aarch64-opc.h.
#define OPD_F_OD_LSB 5 |
Definition at line 198 of file aarch64-opc.h.
#define OPD_F_OD_MASK 0x000000e0 /* Operand-dependent data. */ |
Definition at line 197 of file aarch64-opc.h.
#define OPD_F_SHIFT_BY_2 |
Definition at line 195 of file aarch64-opc.h.
#define OPD_F_SIGN_EXT_T 0x00000004 /* Require sign-extension. */ |
Definition at line 194 of file aarch64-opc.h.
typedef struct aarch64_field aarch64_field |
Definition at line 1 of file aarch64-opc.h.
typedef struct aarch64_operand aarch64_operand |
Definition at line 164 of file aarch64-opc.h.
enum aarch64_field_kind |
Definition at line 33 of file aarch64-opc.h.
int aarch64_find_best_match | ( | const aarch64_inst * | inst, |
const aarch64_opnd_qualifier_seq_t * | qualifiers_list, | ||
int | stop_at, | ||
aarch64_opnd_qualifier_t * | ret | ||
) |
Definition at line 876 of file aarch64-opc.c.
References AARCH64_MAX_OPND_NUM, AARCH64_MAX_QLF_SEQ_NUM, aarch64_num_of_operands(), AARCH64_OPND_QLF_NIL, DEBUG_TRACE, DEBUG_TRACE_IF, empty_qualifier_sequence_p(), found, i, aarch64_inst::opcode, operand_also_qualified_p(), aarch64_inst::operands, aarch64_opnd_info::qualifier, and TRUE.
Referenced by get_expected_qualifier(), and match_operands_qualifier().
enum aarch64_modifier_kind aarch64_get_operand_modifier_from_value | ( | aarch64_insn | value, |
bfd_boolean | extend_p | ||
) |
Definition at line 414 of file aarch64-opc.c.
References aarch64_operand_modifiers, and aarch64_name_value_pair::value.
Referenced by aarch64_ext_addr_regoff(), aarch64_ext_reg_extended(), and aarch64_ext_reg_shifted().
aarch64_insn aarch64_get_operand_modifier_value | ( | enum | aarch64_modifier_kind | ) |
Definition at line 414 of file aarch64-opc.c.
const char* aarch64_get_qualifier_name | ( | aarch64_opnd_qualifier_t | qualifier | ) |
Definition at line 758 of file aarch64-opc.c.
References aarch64_opnd_qualifiers, and operand_qualifier_data::desc.
Referenced by aarch64_print_operand(), decode_sizeq(), match_operands_qualifier(), and print_register_list().
unsigned char aarch64_get_qualifier_nelem | ( | aarch64_opnd_qualifier_t | qualifier | ) |
Definition at line 773 of file aarch64-opc.c.
References aarch64_opnd_qualifiers, assert(), operand_qualifier_data::data1, operand_variant_qualifier_p(), and TRUE.
Referenced by aarch64_ext_simd_addr_post(), and operand_general_constraint_met_p().
aarch64_insn aarch64_get_qualifier_standard_value | ( | aarch64_opnd_qualifier_t | qualifier | ) |
Definition at line 780 of file aarch64-opc.c.
References aarch64_opnd_qualifiers, assert(), operand_qualifier_data::data2, operand_variant_qualifier_p(), and TRUE.
bfd_boolean aarch64_logical_immediate_p | ( | uint64_t | value, |
int | esize, | ||
aarch64_insn * | encoding | ||
) |
Definition at line 1207 of file aarch64-opc.c.
References build_immediate_table(), DEBUG_TRACE, simd_imm_encoding::encoding, cmd_descs_generate::encoding, FALSE, i, simd_imm_encoding::imm, initialized, NULL, PRIx64, simd_imm_encoding_cmp(), simd_immediates, TOTAL_IMM_NB, TRUE, and value.
Referenced by operand_general_constraint_met_p().
int aarch64_match_operands_constraint | ( | aarch64_inst * | inst, |
aarch64_operand_error * | mismatch_detail | ||
) |
Definition at line 2632 of file aarch64-opc.c.
References AARCH64_MAX_OPND_NUM, AARCH64_OPDE_INVALID_VARIANT, AARCH64_OPDE_UNTIED_OPERAND, AARCH64_OPND_NIL, DEBUG_TRACE, aarch64_operand_error::error, i, aarch64_operand_error::index, aarch64_operand_error::kind, match_operands_qualifier(), NULL, aarch64_inst::opcode, operand_general_constraint_met_p(), aarch64_opcode::operands, aarch64_inst::operands, aarch64_opnd_info::reg, aarch64_opnd_info::skip, aarch64_opcode::tied_operand, TRUE, and type.
Referenced by aarch64_opcode_decode(), and determine_disassembling_preference().
int aarch64_select_operand_for_sizeq_field_coding | ( | const aarch64_opcode * | opcode | ) |
Definition at line 199 of file aarch64-opc.c.
References get_data_pattern(), aarch64_opcode::qualifiers_list, and significant_operand_index.
Referenced by decode_sizeq().
bfd_boolean aarch64_wide_constant_p | ( | int64_t | value, |
int | is32, | ||
unsigned int * | shift_amount | ||
) |
Definition at line 1033 of file aarch64-opc.c.
References DEBUG_TRACE, ext, FALSE, NULL, PRIx64, TRUE, and value.
Referenced by convert_movebitmask_to_mov(), convert_movewide_to_mov(), and operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 463 of file aarch64-opc.h.
Referenced by convert_bfm_to_bfc(), convert_csinc_to_cset(), convert_extr_to_ror(), convert_from_csel(), and convert_movebitmask_to_mov().
|
inlinestatic |
Definition at line 368 of file aarch64-opc.h.
References extract_field_2(), fields, and mask.
Referenced by aarch64_decode_variant_using_iclass(), aarch64_ext_addr_offset(), aarch64_ext_addr_regoff(), aarch64_ext_addr_simm(), aarch64_ext_addr_simm10(), aarch64_ext_addr_simple(), aarch64_ext_addr_uimm12(), aarch64_ext_advsimd_imm_shift(), aarch64_ext_aimm(), aarch64_ext_barrier(), aarch64_ext_cond(), aarch64_ext_fbits(), aarch64_ext_ft(), aarch64_ext_imm_half(), aarch64_ext_imm_rotate1(), aarch64_ext_imm_rotate2(), aarch64_ext_ldst_elemlist(), aarch64_ext_ldst_reglist(), aarch64_ext_ldst_reglist_r(), aarch64_ext_prfop(), aarch64_ext_reg_extended(), aarch64_ext_reg_shifted(), aarch64_ext_reglane(), aarch64_ext_reglist(), aarch64_ext_regno(), aarch64_ext_regrt_sysins(), aarch64_ext_shll_imm(), aarch64_ext_simd_addr_post(), aarch64_ext_sve_addr_reg_imm(), aarch64_ext_sve_addr_reg_mul_vl(), aarch64_ext_sve_addr_ri_s4(), aarch64_ext_sve_addr_ri_s4xvl(), aarch64_ext_sve_addr_ri_s6xvl(), aarch64_ext_sve_addr_ri_u6(), aarch64_ext_sve_addr_rr_lsl(), aarch64_ext_sve_addr_rz_xtw(), aarch64_ext_sve_addr_zi_u5(), aarch64_ext_sve_addr_zz(), aarch64_ext_sve_float_half_one(), aarch64_ext_sve_float_half_two(), aarch64_ext_sve_float_zero_one(), aarch64_ext_sve_index(), aarch64_ext_sve_reglist(), aarch64_ext_sve_scale(), do_misc_decoding(), do_special_decoding(), extract_all_fields(), and extract_fields().
|
inlinestatic |
Definition at line 344 of file aarch64-opc.h.
References gen_mask(), aarch64_field::lsb, mask, value, and aarch64_field::width.
Referenced by aarch64_ext_advsimd_imm_modified(), aarch64_ext_ldst_elemlist(), decode_asimd_fcvt(), decode_asisd_fcvtxn(), decode_fcvt(), do_special_decoding(), and extract_field().
aarch64_insn extract_fields | ( | aarch64_insn | code, |
aarch64_insn | mask, | ||
... | |||
) |
Definition at line 142 of file aarch64-dis.c.
References assert(), extract_field(), fields, mask, num, value, and aarch64_field::width.
Referenced by aarch64_decode_variant_using_iclass(), aarch64_ext_addr_offset(), aarch64_ext_addr_simm10(), aarch64_ext_advsimd_imm_modified(), aarch64_ext_advsimd_imm_shift(), aarch64_ext_ft(), aarch64_ext_hint(), aarch64_ext_ldst_elemlist(), aarch64_ext_limm(), aarch64_ext_pstatefield(), aarch64_ext_reglane(), aarch64_ext_sve_addr_ri_s9xvl(), aarch64_ext_sve_index(), aarch64_ext_sysins_op(), aarch64_ext_sysreg(), decode_sizeq(), and do_misc_decoding().
|
inlinestatic |
Definition at line 306 of file aarch64-opc.h.
Referenced by extract_field_2(), and insert_field_2().
|
inlinestatic |
Definition at line 313 of file aarch64-opc.h.
Referenced by aarch64_ext_advsimd_imm_modified(), aarch64_ext_ldst_elemlist(), decode_asimd_fcvt(), decode_asisd_fcvtxn(), and do_special_decoding().
Definition at line 475 of file aarch64-opc.h.
Referenced by aarch64_ext_addr_regoff(), aarch64_ext_addr_uimm12(), aarch64_ext_reglane(), and operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 257 of file aarch64-opc.h.
|
inlinestatic |
Definition at line 265 of file aarch64-opc.h.
Referenced by aarch64_ext_imm(), and operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 276 of file aarch64-opc.h.
Referenced by operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 250 of file aarch64-opc.h.
Referenced by aarch64_ext_sve_addr_reg_imm(), aarch64_ext_sve_addr_reg_mul_vl(), aarch64_ext_sve_addr_rr_lsl(), aarch64_ext_sve_addr_rz_xtw(), aarch64_ext_sve_quad_index(), and operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 358 of file aarch64-opc.h.
References fields, insert_field_2(), mask, and value.
|
inlinestatic |
Definition at line 327 of file aarch64-opc.h.
References assert(), gen_mask(), aarch64_field::lsb, mask, value, and aarch64_field::width.
Referenced by insert_field().
|
inlinestatic |
Definition at line 225 of file aarch64-opc.h.
References FALSE, OPD_F_HAS_INSERTER, and TRUE.
Referenced by aarch64_opcode_decode().
|
inlinestatic |
Definition at line 219 of file aarch64-opc.h.
|
inlinestatic |
Definition at line 243 of file aarch64-opc.h.
References FALSE, OPD_F_SHIFT_BY_2, and TRUE.
Referenced by aarch64_stack_pointer_p(), aarch64_zero_register_p(), and operand_also_qualified_p().
|
inlinestatic |
Definition at line 237 of file aarch64-opc.h.
References FALSE, OPD_F_SIGN_EXT_T, and TRUE.
Referenced by aarch64_ext_imm(), and operand_general_constraint_met_p().
|
inlinestatic |
Definition at line 231 of file aarch64-opc.h.
References FALSE, OPD_F_HAS_EXTRACTOR, and TRUE.
Referenced by aarch64_ext_imm().
|
inlinestatic |
Definition at line 295 of file aarch64-opc.h.
Referenced by convert_bfm_to_bfc(), convert_bfm_to_bfi(), and convert_bfm_to_bfx().
|
inlinestatic |
Definition at line 405 of file aarch64-opc.h.
References aarch64_get_operand_class(), AARCH64_OPND_CLASS_FP_REG, assert(), setup::idx, and aarch64_opcode::operands.
Referenced by do_special_decoding().
|
inlinestatic |
Definition at line 427 of file aarch64-opc.h.
References aarch64_get_operand_class(), aarch64_get_qualifier_esize(), AARCH64_OPND_CLASS_SISD_REG, assert(), aarch64_opcode::operands, and aarch64_opcode::qualifiers_list.
Referenced by do_special_decoding().
|
inlinestatic |
Definition at line 384 of file aarch64-opc.h.
References aarch64_get_operand_class(), AARCH64_OPND_CLASS_INT_REG, assert(), setup::idx, and aarch64_opcode::operands.
Referenced by do_special_decoding().
|
extern |
Definition at line 1 of file aarch64-opc-2.c.
Referenced by aarch64_extract_operand(), aarch64_get_operand_desc(), aarch64_get_operand_name(), aarch64_opcode_decode(), aarch64_stack_pointer_p(), aarch64_zero_register_p(), operand_also_qualified_p(), and operand_general_constraint_met_p().
|
extern |
Definition at line 205 of file aarch64-opc.c.
Referenced by aarch64_ext_addr_simm(), ARC_CGEN_EXTRACT_FN(), arcompact_genops(), arcompact_op(), base_type_to_format_no_unfold(), base_type_to_format_unfold(), dex_resolve_fields_in_class(), dex_resolve_fields_in_class_as_symbols(), extract_all_fields(), extract_field(), extract_fields(), insert_field(), interpret_msrbank(), rz_base_type_as_format(), rz_bin_dex_fields(), rz_core_bin_fields_print(), rz_diff_fields_new(), rz_type_as_format_pair(), and type_to_format_pair().