15 #define AVR_REG_SIZE 8
16 #define AVR_SREG_SIZE 8
17 #define AVR_MMIO_SIZE 8
18 #define AVR_SP_SIZE 16
19 #define AVR_IND_SIZE 16
20 #define AVR_ADDR_SIZE 32
22 #define AVR_SREG "sreg"
26 #define AVR_RAMPX "rampx"
27 #define AVR_RAMPY "rampy"
28 #define AVR_RAMPZ "rampz"
29 #define AVR_RAMPD "rampd"
30 #define AVR_EIND "eind"
31 #define AVR_SPMCSR "spmcsr"
32 #define AVR_LET_RES "RES"
33 #define AVR_LET_IND "IND"
38 #define AVR_SREG_I_BIT ((ut8)(1u << 7))
39 #define AVR_SREG_I "if"
40 #define AVR_SREG_T_BIT ((ut8)(1u << 6))
41 #define AVR_SREG_T "tf"
42 #define AVR_SREG_H_BIT ((ut8)(1u << 5))
43 #define AVR_SREG_H "hf"
44 #define AVR_SREG_S_BIT ((ut8)(1u << 4))
45 #define AVR_SREG_S "sf"
46 #define AVR_SREG_V_BIT ((ut8)(1u << 3))
47 #define AVR_SREG_V "vf"
48 #define AVR_SREG_N_BIT ((ut8)(1u << 2))
49 #define AVR_SREG_N "nf"
50 #define AVR_SREG_Z_BIT ((ut8)(1u << 1))
51 #define AVR_SREG_Z "zf"
52 #define AVR_SREG_C_BIT ((ut8)(1u << 0))
53 #define AVR_SREG_C "cf"
55 #define AVR_ADDR(x) UNSIGNED(AVR_ADDR_SIZE, x)
56 #define AVR_PC(x) UN(AVR_ADDR_SIZE, x)
57 #define AVR_SH(sh) U32((sh))
58 #define AVR_IMM(imm) UN(AVR_REG_SIZE, (imm))
59 #define AVR_IMM16(imm) U16((imm))
60 #define AVR_REG(reg) VARG(avr_registers[reg])
61 #define AVR_REG_SET(reg, x) SETG(avr_registers[reg], x)
62 #define AVR_ONE() UN(AVR_REG_SIZE, 1)
63 #define AVR_ZERO() UN(AVR_REG_SIZE, 0)
64 #define AVR_X() avr_il_get_indirect_address_reg(27, 26)
65 #define AVR_Y() avr_il_get_indirect_address_reg(29, 28)
66 #define AVR_Z() avr_il_get_indirect_address_reg(31, 30)
67 #define AVR_SET_X(l, n, add) avr_il_update_indirect_address_reg(l, 27, 26, n, add)
68 #define AVR_SET_Y(l, n, add) avr_il_update_indirect_address_reg(l, 29, 28, n, add)
69 #define AVR_SET_Z(l, n, add) avr_il_update_indirect_address_reg(l, 31, 30, n, add)
71 #define AVR_SREG_I_SET(x) avr_il_assign_bool(AVR_SREG_I, x)
72 #define AVR_SREG_T_SET(x) avr_il_assign_bool(AVR_SREG_T, x)
73 #define AVR_SREG_H_SET(x) avr_il_assign_bool(AVR_SREG_H, x)
74 #define AVR_SREG_S_SET(x) avr_il_assign_bool(AVR_SREG_S, x)
75 #define AVR_SREG_V_SET(x) avr_il_assign_bool(AVR_SREG_V, x)
76 #define AVR_SREG_N_SET(x) avr_il_assign_bool(AVR_SREG_N, x)
77 #define AVR_SREG_Z_SET(x) avr_il_assign_bool(AVR_SREG_Z, x)
78 #define AVR_SREG_C_SET(x) avr_il_assign_bool(AVR_SREG_C, x)
80 #define avr_return_val_if_invalid_gpr(x, v) \
82 RZ_LOG_ERROR("RzIL: AVR: invalid register R%u\n", x); \
86 #define avr_return_val_if_invalid_indirect_address(x, v) \
87 if (x != 'X' && x != 'Y' && x != 'Z') { \
88 RZ_LOG_ERROR("RzIL: AVR: invalid indirect address register %c\n", x); \
96 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
"r8",
"r9",
97 "r10",
"r11",
"r12",
"r13",
"r14",
"r15",
"r16",
"r17",
"r18",
98 "r19",
"r20",
"r21",
"r22",
"r23",
"r24",
"r25",
"r26",
"r27",
99 "r28",
"r29",
"r30",
"r31"
106 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
"r8",
"r9",
107 "r10",
"r11",
"r12",
"r13",
"r14",
"r15",
"r16",
"r17",
"r18",
108 "r19",
"r20",
"r21",
"r22",
"r23",
"r24",
"r25",
"r26",
"r27",
131 _iar =
ADD(_iar, _num);
133 _iar =
SUB(_iar, _num);
139 _high =
SETG(Rh, _iar);
145 _iar =
ADD(_iar, _num);
147 _iar =
SUB(_iar, _num);
151 _low =
SETG(Rl, _iar);
152 return SEQ2(_high, _low);
216 return SETG(bit_reg, and);
240 _is_zero =
AND(_is_zero,
Z);
273 or0 =
LOGOR(and0, and1);
276 or0 =
LOGOR(or0, and2);
307 or0 =
LOGOR(and0, and1);
310 or0 =
LOGOR(or0, and2);
331 and0 =
LOGAND(and0, not0);
337 and1 =
LOGAND(not0, not1);
341 or0 =
LOGOR(and0, and1);
377 and0 =
LOGAND(and0, not1);
386 or0 =
LOGOR(and0, and1);
448 or0 =
LOGOR(and0, and1);
451 or0 =
LOGOR(or0, and2);
471 carry =
AND(Res, Rdh);
497 or0 =
LOGOR(and0, and1);
500 or0 =
LOGOR(or0, and2);
524 carry =
AND(Res, Rdh);
553 y =
UN(bitsize, subtrahend);
1008 if (!
reg &&
A < 32) {
1015 result =
LOGAND(clearb, target);
1228 sub =
SUB(sub, carry);
1372 if (aop->
param[2] !=
'+') {
1538 high =
SETG(
"r1",
x);
1548 low =
SETG(
"r0",
x);
1606 high =
SETG(
"r1",
x);
1616 low =
SETG(
"r0",
x);
1678 if (!
reg &&
A < 32) {
1865 char Rr = (char)aop->
param[1];
1866 char Op = (
char)aop->
param[2];
1888 if (Op !=
'+' && Op !=
'-') {
1908 return SEQ3(ld, let, post_op);
1936 bool post_inc = aop->
param[2] ==
'+';
1953 return SEQ3(lpm, let, zpp);
2057 return SEQ2(let, movw);
2292 if (!
reg &&
A < 32) {
2340 return SEQ2(inc, pop);
2363 return SEQ2(push, dec);
2621 if (!
reg &&
A < 32) {
2628 result =
LOGOR(setb, target);
2639 if (!
reg &&
A < 32) {
2646 result =
LOGAND(clearb, target);
2658 if (!
reg &&
A < 32) {
2665 result =
LOGAND(clearb, target);
2723 result =
LOGAND(clearb, target);
2738 result =
LOGAND(clearb, target);
2808 char Rr = (char)aop->
param[1];
2809 char Op = (
char)aop->
param[2];
2831 if (Op !=
'+' && Op !=
'-') {
2851 return SEQ3(st, let, post_op);
3019 return SEQ3(let, set, store);
3151 op->il_op = create_op(aop, next_op,
pc, analysis);
static unsigned invert(unsigned x)
RZ_API RZ_OWN RzAnalysisILConfig * rz_analysis_il_config_new(ut32 pc_size, bool big_endian, ut32 mem_key_size)
static RzILOpEffect * cmp(cs_insn *insn, bool is_thumb)
static RzILOpEffect * mul(cs_insn *insn, bool is_thumb)
static ut32 neg(ArmOp *op)
static RzILOpEffect * avr_il_sub(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_nop(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_las(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brcs(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_rcall(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_fmuls(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_set(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cln(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_lsr(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_two_complement_overflow_flag_subtraction_wide(const char *local, ut16 reg)
static RzILOpEffect * avr_il_cpi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define avr_return_val_if_invalid_indirect_address(x, v)
static RzILOpEffect * avr_il_icall(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_eijmp(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_inc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_half_carry_flag_addition(const char *local, RzILOpPure *x, RzILOpPure *y)
static RzILOpEffect * avr_il_sev(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cli(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_two_complement_overflow_flag_addition(const char *local, RzILOpPure *x, RzILOpPure *y)
static RzILOpEffect * avr_il_neg(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_com(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_eicall(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cls(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_ser(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_unk(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_two_complement_overflow_flag_addition_wide(const char *local, ut16 reg)
#define AVR_SREG_I_SET(x)
static RzILOpEffect * avr_il_check_zero_flag_local(const char *local, bool and_zero)
static RzILOpEffect * avr_il_brpl(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brne(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
RzILOpEffect *(* avr_il_op)(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brvs(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpBitVector * avr_il_get_indirect_address_reg(ut16 reg_high, ut16 reg_low)
static RzILOpEffect * avr_il_lpm(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SREG_S_SET(x)
static RzILOpEffect * avr_il_clv(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static avr_il_op avr_ops[AVR_OP_SIZE]
static RzILOpEffect * avr_il_check_signess_flag()
static RzILOpEffect * avr_il_xch(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_add(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_ldi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
RZ_IPI RzAnalysisILConfig * rz_avr_il_config(RZ_NONNULL RzAnalysis *analysis)
static RzILOpEffect * avr_il_rjmp(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_movw(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_jump_relative(AVROp *aop, RzAnalysis *analysis, ut64 where)
static RzILOpEffect * avr_il_brhs(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_andi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sts(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_out(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sbis(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_adiw(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_ses(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_elpm(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_lds(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_zero_flag_reg(ut16 reg)
static RzILOpEffect * avr_il_ret(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_assign_reg(const char *dst, const char *src)
#define AVR_SREG_C_SET(x)
static RzILOpEffect * avr_il_brvc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define avr_return_val_if_invalid_gpr(x, v)
static RzILOpEffect * avr_il_push(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static const char * avr_global_registers[]
static RzILOpEffect * avr_il_muls(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_clh(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brts(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_lsl(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_negative_flag_reg(ut16 reg)
static RzILOpEffect * avr_il_jmp(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brmi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_carry_flag_addition(const char *local, RzILOpPure *x, RzILOpPure *y)
static RzILOpEffect * avr_il_mov(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SREG_H_SET(x)
static RzILOpEffect * avr_il_load_reg(ut64 addr, const char *reg, ut16 size)
static RzILOpEffect * avr_il_fmul(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_eor(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SREG_Z_SET(x)
static RzILOpEffect * avr_il_check_two_complement_overflow_flag_subtraction(const char *local, RzILOpPure *x, RzILOpPure *y)
#define AVR_SET_X(l, n, add)
#define AVR_SET_Y(l, n, add)
static RzILOpEffect * avr_il_store_reg(ut64 addr, const char *reg)
#define AVR_SREG_V_SET(x)
static RzILOpEffect * avr_il_check_half_carry_flag_subtraction(const char *local, RzILOpPure *x, RzILOpPure *y)
static RzILOpEffect * avr_il_check_carry_flag_addition_wide(const char *local, ut16 reg)
RZ_IPI bool rz_avr_il_opcode(RzAnalysis *analysis, RzAnalysisOp *op, ut64 pc, AVROp *aop, AVROp *next_op)
static RzILOpEffect * avr_il_swap(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brcc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_st(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_branch_when(AVROp *aop, RzAnalysis *analysis, ut64 where, RzILOpBool *when, bool cond)
static RzILOpEffect * avr_il_asr(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_assign_bool(const char *reg, ut16 value)
static RzILOpEffect * avr_il_sbrc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_carry_flag_subtraction(const char *local, RzILOpPure *x, RzILOpPure *y)
static RzILOpEffect * avr_il_bld(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brhc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_rol(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_seh(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_carry_flag_subtraction_wide(const char *local, ut16 reg)
static RzILOpEffect * avr_il_sbiw(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_update_indirect_address_reg(const char *local, ut16 reg_high, ut16 reg_low, ut64 n, bool add)
static RzILOpEffect * avr_il_sec(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SREG_T_SET(x)
static RzILOpEffect * avr_il_cpc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_call(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brid(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_lac(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sbi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_and(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static const char * resolve_mmio(RzAnalysis *analysis, ut16 address)
static RzILOpEffect * avr_il_brge(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_adc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sen(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brie(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_lat(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_set16_from_reg(const char *dst, const char *src, ut16 mask, ut16 sh)
#define AVR_REG_SET(reg, x)
static RzILOpPure * avr_subtract_if(ut32 bitsize, ut64 limit, RzILOpPure *minuend, ut64 subtrahend, bool invert)
static RzILOpEffect * avr_il_ori(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_mul(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sez(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_set_sreg_bit_from_reg(const char *src, ut8 bit_val, const char *bit_reg)
static RzILOpEffect * avr_il_dec(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_ld(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SREG_N_SET(x)
static RzILOpEffect * avr_il_sbic(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_pop(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cbi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sbrs(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
#define AVR_SET_Z(l, n, add)
static RzILOpEffect * avr_il_brtc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_fmulsu(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sbci(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_clr(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_bst(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_store_pure(ut64 addr, RzILOpPure *var)
static RzILOpEffect * avr_il_clt(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_mulsu(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_clz(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpBitVector * avr_il_sreg_bit_as_imm(const char *sreg_bit, ut8 bit)
static RzILOpEffect * avr_il_sei(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_sbc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_or(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cp(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_cpse(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_negative_flag_local(const char *local)
const char * avr_registers[32]
static RzILOpEffect * avr_il_ror(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_clc(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_ijmp(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_brlt(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_in(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_check_nc_overflow_flag()
static RzILOpEffect * avr_il_subi(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_breq(AVROp *aop, AVROp *next_op, ut64 pc, RzAnalysis *analysis)
static RzILOpEffect * avr_il_assign_imm(const char *reg, ut16 imm)
RZ_API RZ_OWN RzILOpPure * rz_il_op_new_loadw(RzILMemIndex mem, RZ_NONNULL RzILOpBitVector *key, ut32 n_bits)
Helper to create RzILOpArgsLoadW.
RZ_API RZ_OWN RzILOpPure * rz_il_op_new_ite(RZ_NONNULL RzILOpPure *condition, RZ_NULLABLE RzILOpPure *x, RZ_NULLABLE RzILOpPure *y)
op structure for ite (bool -> 'a pure -> 'a pure -> 'a pure)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_append(RZ_NONNULL RzILOpBitVector *high, RZ_NONNULL RzILOpBitVector *low)
op structure for appending 2 bitv: MSB:LSB high:low
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask struct ustat static ubuf static getppid static setsid static egid sigset_t static set struct timeval struct timezone static tz fd_set fd_set fd_set struct timeval static timeout const char char static bufsiz const char static swapflags void static offset const char static length static mode static who const char struct statfs static buf unsigned unsigned num
static uint32_t const uint8_t uint32_t uint32_t limit
void * load(const char *name, size_t *len)
#define rz_return_val_if_fail(expr, val)
Syntax Macros for RzIL Lifting.
#define SEQ8(e0, e1, e2, e3, e4, e5, e6, e7)
#define SHIFTL(f, v, dist)
#define APPEND(high, low)
#define STOREW(addr, val)
#define SEQ5(e0, e1, e2, e3, e4)
#define SEQ4(e0, e1, e2, e3)
#define SHIFTR(f, v, dist)
#define SEQ9(e0, e1, e2, e3, e4, e5, e6, e7, e8)
#define SEQ7(e0, e1, e2, e3, e4, e5, e6)
#define SEQ6(e0, e1, e2, e3, e4, e5)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API int rz_str_ncasecmp(const char *dst, const char *orig, size_t n)
#define cond(bop, top, mask, flags)
Description of the global context of an RzAnalysisILVM.
RzPlatformTarget * arch_target
An IL op performing a pure computation, 'a pure.
#define V(handle, symbol)
ut64(WINAPI *w32_GetEnabledXStateFeatures)()