Rizin
unix-like reverse engineering framework and cli tools
rz_il_opcodes.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2021 Florian Märkl <info@florianmaerkl.de>
2 // SPDX-FileCopyrightText: 2021 heersin <teablearcher@gmail.com>
3 // SPDX-License-Identifier: LGPL-3.0-only
4 
5 #ifndef RZ_IL_OPCODES_H
6 #define RZ_IL_OPCODES_H
7 
9 
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13 
39 typedef struct rz_il_op_pure_t RzILOpPure;
40 
43 
44 typedef struct rz_il_op_effect_t RzILOpEffect;
45 
51 typedef struct rz_il_op_args_bv_t {
54 
63 };
64 
68 
78 };
79 
82 
100 };
101 
112 
123 };
124 
125 typedef struct rz_il_op_args_cmp_t RzILOpArgsEq;
126 typedef struct rz_il_op_args_cmp_t RzILOpArgsSle;
127 typedef struct rz_il_op_args_cmp_t RzILOpArgsUle;
128 
132 typedef struct rz_il_op_args_cast_t {
137 
142 typedef struct rz_il_op_args_append_t {
146 
157 };
158 
161 
167 typedef struct rz_il_op_args_set_t {
168  const char *v;
169  bool is_local;
172 
178 typedef struct rz_il_op_args_let_t {
179  const char *name;
183 
189 typedef struct rz_il_op_args_jmp_t {
192 
198 typedef struct rz_il_op_args_goto_t {
199  const char *lbl;
201 
207 typedef struct rz_il_op_args_seq_t {
211 
217 typedef struct rzil_op_blk_t {
218  const char *label;
222 
228 typedef struct rzil_op_repeat_t {
232 
238 typedef struct rz_il_op_args_branch_t {
243 
249 typedef struct rz_il_op_args_ite_t {
254 
260 typedef struct rz_il_op_args_var_t {
261  const char *v;
264 
278 };
279 
283 
293 };
294 
296 
302 typedef struct rz_il_op_args_load_t {
306 
312 typedef struct rz_il_op_args_store_t {
317 
323 typedef struct rz_il_op_args_loadw_t {
328 
334 typedef struct rz_il_op_args_storew_t {
339 
341 // Opcodes of type 'a pure //
342 
343 typedef enum {
344  // Init
348 
349  // RzILBool
356 
357  // RzBitVector
381  // ...
382 
383  // Memory
386 
389 
401  union {
405 
410 
434 
437  } op;
438 };
439 
442 
487 
490 
492 // Opcodes of type 'a effect //
493 
494 typedef enum {
497 
507 
510 
513  union {
521 
524  } op;
525 };
526 
528 
539 
542 
543 // Printing/Export
545 
548 
551 
552 #ifdef __cplusplus
553 }
554 #endif
555 
556 #endif // RZ_IL_OPCODES_H
ut16 val
Definition: armass64_const.h:6
static SblHeader sb
Definition: bin_mbn.c:26
static int value
Definition: cmd_api.c:93
#define RZ_API
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len key
Definition: sflib.h:118
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void length
Definition: sflib.h:133
uint32_t ut32
const char * v
Definition: dsignal.c:12
void * mem
Definition: libc.cpp:91
char * dst
Definition: lz4.h:724
ut32 RzILMemIndex
Definition: mem.h:14
int x
Definition: mipsasm.c:20
int n
Definition: mipsasm.c:19
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_neg(RZ_NONNULL RzILOpBitVector *value)
op structure for neg ('s bitv -> 's bitv)
Definition: il_opcodes.c:373
RZ_API RZ_NONNULL const char * rz_il_op_pure_code_stringify(RzILOpPureCode code)
Definition: il_export.c:872
struct rzil_op_blk_t RzILOpArgsBlk
op structure for blk (label -> data eff -> ctrl eff -> unit eff)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_log_xor(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:505
struct rz_il_op_args_seq_t RzILOpArgsSeq
op structure for Seq ('a eff -> 'a eff -> 'a eff)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_log_and(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:481
RZ_API RZ_OWN RzILOpPure * rz_il_op_new_let(RZ_NONNULL const char *name, RZ_NONNULL RzILOpPure *exp, RZ_NONNULL RzILOpPure *body)
Definition: il_opcodes.c:75
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_empty()
oop structure for an empty effect (val empty : 'a sort -> 'a t)
Definition: il_opcodes.c:560
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_ult(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:285
struct rzil_op_repeat_t RzILOpArgsRepeat
op structure for repeat (bool -> data eff -> data eff)
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_goto(RZ_NONNULL const char *label)
op structure for goto (label -> ctrl eff)
Definition: il_opcodes.c:601
struct rz_il_op_args_storew_t RzILOpArgsStoreW
Store an entire word of arbitrary bit size into a memory.
RzILOpPureCode
@ RZ_IL_OP_SHIFTR
@ RZ_IL_OP_ULE
@ RZ_IL_OP_SUB
@ RZ_IL_OP_LOGNOT
@ RZ_IL_OP_MSB
@ RZ_IL_OP_ITE
@ RZ_IL_OP_PURE_MAX
@ RZ_IL_OP_SLE
@ RZ_IL_OP_LSB
@ RZ_IL_OP_OR
@ RZ_IL_OP_IS_ZERO
@ RZ_IL_OP_NEG
@ RZ_IL_OP_ADD
@ RZ_IL_OP_B0
@ RZ_IL_OP_LET
@ RZ_IL_OP_CAST
@ RZ_IL_OP_MOD
@ RZ_IL_OP_LOGOR
@ RZ_IL_OP_VAR
@ RZ_IL_OP_INV
@ RZ_IL_OP_APPEND
@ RZ_IL_OP_DIV
@ RZ_IL_OP_SHIFTL
@ RZ_IL_OP_EQ
@ RZ_IL_OP_MUL
@ RZ_IL_OP_BITV
@ RZ_IL_OP_B1
@ RZ_IL_OP_XOR
@ RZ_IL_OP_LOAD
@ RZ_IL_OP_AND
@ RZ_IL_OP_SMOD
@ RZ_IL_OP_LOGXOR
@ RZ_IL_OP_SDIV
@ RZ_IL_OP_LOADW
@ RZ_IL_OP_LOGAND
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_b1()
op structure for bool true
Definition: il_opcodes.c:94
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_sub(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:409
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)
Definition: il_opcodes.c:53
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_uge(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:305
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_ule(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
op structure for sle/ule ('a bitv -> 'a bitv -> bool)
Definition: il_opcodes.c:263
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_shiftl(RZ_NONNULL RzILOpBool *fill_bit, RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *sh)
op structure for left shift (bool -> 's bitv -> 'b bitv -> 's bitv)
Definition: il_opcodes.c:517
RZ_API void rz_il_op_pure_free(RZ_NULLABLE RzILOpPure *op)
Definition: il_opcodes.c:928
struct rz_il_op_args_load_t RzILOpArgsLoad
op structure for load (('a, 'b) mem -> 'a bitv -> 'b bitv)
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_lsb(RZ_NONNULL RzILOpPure *val)
op structure for lsb ('s bitv -> bool) [LSB] lsb x is the least significant bit of x.
Definition: il_opcodes.c:223
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_ugt(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:325
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_mul(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:421
struct rz_il_op_args_jmp_t RzILOpArgsJmp
op structure for jmp (_ bitv -> ctrl eff)
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
Definition: il_opcodes.c:547
struct rz_il_op_args_var_t RzILOpArgsVar
op structure for var ('a var -> 'a pure)
struct rz_il_op_args_append_t RzILOpArgsAppend
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_jmp(RZ_NONNULL RzILOpBitVector *dst)
op structure for jmp (_ bitv -> ctrl eff)
Definition: il_opcodes.c:589
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_is_zero(RZ_NONNULL RzILOpPure *bv)
Definition: il_opcodes.c:233
RZ_API void rz_il_op_effect_json(RZ_NONNULL RzILOpEffect *op, RZ_NONNULL PJ *pj)
Definition: il_export.c:731
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_smod(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:457
struct rz_il_op_args_bv_t RzILOpArgsBv
value is a bitvector constant.
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_bool_xor(RZ_NONNULL RzILOpBool *x, RZ_NONNULL RzILOpBool *y)
op structure for xor (bool -> bool -> bool)
Definition: il_opcodes.c:135
RZ_API void rz_il_op_pure_json(RZ_NONNULL RzILOpPure *op, RZ_NONNULL PJ *pj)
Definition: il_export.c:721
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_signed(ut32 length, RZ_NONNULL RzILOpBitVector *val)
Extend val to length bits, filling up with val's most significant bit.
Definition: il_opcodes.c:363
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_set(RZ_NONNULL const char *v, bool is_local, RZ_NONNULL RzILOpPure *x)
op structure for set ('a var -> 'a pure -> data eff)
Definition: il_opcodes.c:577
RZ_API RZ_OWN RzILOpPure * rz_il_op_new_var(RZ_NONNULL const char *var, RzILVarKind kind)
op structure for var ('a var -> 'a pure)
Definition: il_opcodes.c:65
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_msb(RZ_NONNULL RzILOpPure *val)
op structure for msb ('s bitv -> bool) [MSB] msb x is the most significant bit of x.
Definition: il_opcodes.c:212
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_bool_and(RZ_NONNULL RzILOpBool *x, RZ_NONNULL RzILOpBool *y)
op structure for and (bool -> bool -> bool)
Definition: il_opcodes.c:107
RZ_API void rz_il_op_effect_free(RZ_NULLABLE RzILOpEffect *op)
Definition: il_opcodes.c:1036
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_log_or(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:493
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_bool_or(RZ_NONNULL RzILOpBool *x, RZ_NONNULL RzILOpBool *y)
op structure for or (bool -> bool -> bool)
Definition: il_opcodes.c:121
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_shiftr(RZ_NONNULL RzILOpBool *fill_bit, RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *sh)
op structure for right shift (bool -> 's bitv -> 'b bitv -> 's bitv)
Definition: il_opcodes.c:529
struct rz_il_op_args_loadw_t RzILOpArgsLoadW
Load an entire word of arbitrary bit size from a memory.
struct rz_il_op_args_goto_t RzILOpArgsGoto
op structure for goto (label -> ctrl eff)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_bitv_from_ut64(ut32 length, ut64 number)
op structure for bitvector converted from ut64
Definition: il_opcodes.c:173
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_repeat(RZ_NONNULL RzILOpBool *condition, RZ_NONNULL RzILOpEffect *data_effect)
op structure for repeat (bool -> data eff -> data eff)
Definition: il_opcodes.c:690
struct rz_il_op_args_branch_t RzILOpArgsBranch
op structure for branch (bool -> 'a eff -> 'a eff -> 'a eff)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_sdiv(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:445
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_store(RzILMemIndex mem, RZ_NONNULL RzILOpBitVector *key, RZ_NONNULL RzILOpBitVector *value)
Helper to create RzILOpArgsStoreW.
Definition: il_opcodes.c:728
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_mod(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:469
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_bool_inv(RZ_NONNULL RzILOpBool *x)
op structure for inv (!bool -> bool)
Definition: il_opcodes.c:149
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_eq(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:251
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_cast(ut32 length, RZ_NONNULL RzILOpBool *fill, RZ_NONNULL RzILOpBitVector *val)
op structure for casting bitv
Definition: il_opcodes.c:341
RzILOpPure RzILOpBitVector
Definition: rz_il_opcodes.h:42
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_seqn(ut32 n,...)
Definition: il_opcodes.c:632
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_loadw(RzILMemIndex mem, RZ_NONNULL RzILOpBitVector *key, ut32 n_bits)
Helper to create RzILOpArgsLoadW.
Definition: il_opcodes.c:738
RZ_API void rz_il_op_effect_stringify(RZ_NONNULL RzILOpEffect *op, RZ_NONNULL RzStrBuf *sb)
Definition: il_export.c:711
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_bitv(RZ_NONNULL RzBitVector *value)
op structure for bitvector
Definition: il_opcodes.c:161
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_non_zero(RZ_NONNULL RzILOpPure *bv)
Definition: il_opcodes.c:243
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_branch(RZ_NONNULL RzILOpBool *condition, RZ_NULLABLE RzILOpEffect *true_effect, RZ_NULLABLE RzILOpEffect *false_effect)
op structure for branch (bool -> 'a eff -> 'a eff -> 'a eff)
Definition: il_opcodes.c:702
RZ_API void rz_il_op_pure_stringify(RZ_NONNULL RzILOpPure *op, RZ_NONNULL RzStrBuf *sb)
Definition: il_export.c:701
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_log_not(RZ_NONNULL RzILOpBitVector *value)
op structure for not ('s bitv -> 's bitv)
Definition: il_opcodes.c:385
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_b0()
op structure for bool false
Definition: il_opcodes.c:85
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_slt(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:295
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_unsigned(ut32 length, RZ_NONNULL RzILOpBitVector *val)
Extend val to length bits, filling up with zeroes.
Definition: il_opcodes.c:353
struct rz_il_op_args_set_t RzILOpArgsSet
op structure for set ('a var -> 'a pure -> data eff)
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_sgt(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:333
struct rz_il_op_args_store_t RzILOpArgsStore
op structure for store (('a, 'b) mem -> 'a bitv -> 'b bitv -> ('a, 'b) mem)
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_div(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:433
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_storew(RzILMemIndex mem, RZ_NONNULL RzILOpBitVector *key, RZ_NONNULL RzILOpBitVector *value)
Helper to create RzILOpArgsStoreW.
Definition: il_opcodes.c:748
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_shiftr_arith(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
alias for shiftr (msb x) x d, right-shift filling up with the left operand's msb
Definition: il_opcodes.c:539
struct rz_il_op_args_let_t RzILOpArgsLet
op structure for let_ : 'a var -> 'a pure -> 'b pure -> 'b pure
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_bitv_from_st64(ut32 length, st64 number)
op structure for bitvector converted from st64
Definition: il_opcodes.c:193
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_add(RZ_NONNULL RzILOpBitVector *x, RZ_NONNULL RzILOpBitVector *y)
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: il_opcodes.c:397
struct rz_il_op_args_ite_t RzILOpArgsIte
op structure for ite (bool -> 'a pure -> 'a pure -> 'a pure)
RzILOpPure RzILOpBool
Definition: rz_il_opcodes.h:41
RZ_API RZ_OWN RzILOpBitVector * rz_il_op_new_load(RzILMemIndex mem, RZ_NONNULL RzILOpBitVector *key)
Helper to create RzILOpArgsLoad.
Definition: il_opcodes.c:718
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_sge(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
Definition: il_opcodes.c:315
RZ_API RZ_OWN RzILOpBool * rz_il_op_new_sle(RZ_NONNULL RzILOpPure *x, RZ_NONNULL RzILOpPure *y)
op structure for sle/ule ('a bitv -> 'a bitv -> bool)
Definition: il_opcodes.c:275
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_blk(RZ_NONNULL const char *label, RZ_NONNULL RzILOpEffect *data_effect, RZ_NONNULL RzILOpEffect *ctrl_effect)
op structure for blk (label -> data eff -> ctrl eff -> unit eff)
Definition: il_opcodes.c:678
struct rz_il_op_args_cast_t RzILOpArgsCast
op structure for casting bitv
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_seq(RZ_NONNULL RzILOpEffect *x, RZ_NONNULL RzILOpEffect *y)
op structure for Seq ('a eff -> 'a eff -> 'a eff)
Definition: il_opcodes.c:613
RZ_API RzILOpPure * rz_il_op_pure_dup(RZ_NONNULL RzILOpPure *op)
Definition: il_opcodes.c:763
RZ_API RZ_OWN RzILOpEffect * rz_il_op_new_nop()
Definition: il_opcodes.c:566
RzILOpEffectCode
@ RZ_IL_OP_BLK
@ RZ_IL_OP_GOTO
@ RZ_IL_OP_SEQ
@ RZ_IL_OP_EFFECT_MAX
@ RZ_IL_OP_NOP
@ RZ_IL_OP_JMP
@ RZ_IL_OP_EMPTY
@ RZ_IL_OP_STORE
@ RZ_IL_OP_STOREW
@ RZ_IL_OP_REPEAT
@ RZ_IL_OP_BRANCH
@ RZ_IL_OP_SET
#define RZ_NULLABLE
Definition: rz_types.h:65
#define RZ_OWN
Definition: rz_types.h:62
#define RZ_NONNULL
Definition: rz_types.h:64
#define st64
Definition: rz_types_base.h:10
structure for bitvector
Definition: rz_bitvector.h:19
Definition: inftree9.h:24
Definition: dis.h:35
Definition: z80asm.h:102
Definition: rz_pj.h:12
op structure for two-operand algorithm and logical operations ('s bitv -> 's bitv -> 's bitv)
Definition: rz_il_opcodes.h:97
RzILOpBitVector * x
left operand
Definition: rz_il_opcodes.h:98
RzILOpBitVector * y
right operand
Definition: rz_il_opcodes.h:99
op structure for appending 2 bitv: MSB:LSB high:low
RzILOpBitVector * low
bitvector occupying the least significant bits
RzILOpBitVector * high
bitvector occupying the most significant bits
op structure for inv (!bool -> bool)
RzILOpBool * x
single operand
op structure for and, or and xor (bool -> bool -> bool)
RzILOpBool * x
left operand
RzILOpBool * y
right operand
op structure for branch (bool -> 'a eff -> 'a eff -> 'a eff)
RZ_NONNULL RzILOpEffect * true_eff
effect for when condition evaluates to true
RZ_NONNULL RzILOpEffect * false_eff
effect for when condition evaluates to false
value is a bitvector constant.
Definition: rz_il_opcodes.h:51
RzBitVector * value
value of bitvector
Definition: rz_il_opcodes.h:52
RzILOpBitVector * bv
unary operand
Definition: rz_il_opcodes.h:77
op structure for casting bitv
RzILOpBool * fill
If m = size val - length > 0 then m fill-bits are prepended to the most significant part of the vecto...
RzILOpBitVector * val
value to cast
ut32 length
new bits length
op structure for binary comparison ops ('a bitv -> 'a bitv -> bool)
RzILOpBitVector * x
index of operand 1
RzILOpBitVector * y
index of operand 2
op structure for goto (label -> ctrl eff)
const char * lbl
name of the label, const one
op structure for ite (bool -> 'a pure -> 'a pure -> 'a pure)
RzILOpPure * y
index of RzILVal operand 2
RzILOpPure * x
index of RzILVal operand 1
RzILOpBool * condition
index of BOOL condition
op structure for jmp (_ bitv -> ctrl eff)
RzILOpBitVector * dst
index of destination address
op structure for let_ : 'a var -> 'a pure -> 'b pure -> 'b pure
const char * name
name of variable
RzILOpPure * exp
value/expression to bind the variable to
RzILOpPure * body
body in which the variable will be bound and that produces the result
op structure for load (('a, 'b) mem -> 'a bitv -> 'b bitv)
RzILMemIndex mem
index of the mem inside the vm to use
RzILOpBitVector * key
index of the cell (address) in mem, must have exactly the size of a key in the memory
Load an entire word of arbitrary bit size from a memory.
RzILOpBitVector * key
memory index of the RzBitVector key (address)
RzILMemIndex mem
index of the mem inside the vm to use
ut32 n_bits
n of bits to read, and of the resulting bitvector
op structure for Seq ('a eff -> 'a eff -> 'a eff)
RzILOpEffect * y
perform this second
RzILOpEffect * x
perform this first
op structure for set ('a var -> 'a pure -> data eff)
bool is_local
whether a global variable should be set or a local optionally created and set
const char * v
name of variable, const one
RzILOpPure * x
value to set the variable to
op structure for lshift and rshift (bool -> 's bitv -> 'b bitv -> 's bitv)
RzILOpBitVector * x
index of operand 1
RzILOpBitVector * y
index of operand 2
RzILOpBool * fill_bit
index of fill bit
op structure for store (('a, 'b) mem -> 'a bitv -> 'b bitv -> ('a, 'b) mem)
RzILOpBitVector * value
value to store, must have exactly the size of a memory cell
RzILOpBitVector * key
address where to store to, must have exactly the size of a key in the memory
RzILMemIndex mem
index of memory in the vm to use
Store an entire word of arbitrary bit size into a memory.
RzILOpBitVector * value
value to store, arbitrary size
RzILMemIndex mem
index of memory in the vm to use
RzILOpBitVector * key
address where to store to
op structure for 's bitv -> bool [MSB] msb x is the most significant bit of x. [LSB] lsb x is the lea...
Definition: rz_il_opcodes.h:61
RzILOpBitVector * bv
Definition: rz_il_opcodes.h:62
op structure for var ('a var -> 'a pure)
RzILVarKind kind
set of variables to pick from
const char * v
name of variable, const one
RzILOpArgsStore store
RzILOpArgsBlk blk
RzILOpArgsGoto goto_
RzILOpEffectCode code
RzILOpArgsBranch branch
RzILOpArgsSeq seq
RzILOpArgsSet set
union rz_il_op_effect_t::@287 op
RzILOpArgsJmp jmp
RzILOpArgsRepeat repeat
RzILOpArgsStoreW storew
An IL op performing a pure computation, 'a pure.
RzILOpArgsMod mod
RzILOpArgsIte ite
RzILOpArgsLogxor logxor
union rz_il_op_pure_t::@286 op
RzILOpArgsBoolInv boolinv
RzILOpArgsLogor logor
RzILOpArgsShiftRight shiftr
RzILOpArgsBoolXor boolxor
RzILOpArgsLet let
RzILOpArgsSmod smod
RzILOpArgsNeg neg
RzILOpArgsShiftLeft shiftl
RzILOpArgsMul mul
RzILOpArgsLogand logand
RzILOpArgsSle sle
RzILOpArgsBoolOr boolor
RzILOpPureCode code
RzILOpArgsLsb lsb
RzILOpArgsSub sub
RzILOpArgsEq eq
RzILOpArgsVar var
RzILOpArgsLoad load
RzILOpArgsSdiv sdiv
RzILOpArgsLoadW loadw
RzILOpArgsBv bitv
RzILOpArgsLogNot lognot
RzILOpArgsBoolAnd booland
RzILOpArgsDiv div
RzILOpArgsAppend append
RzILOpArgsUle ule
RzILOpArgsCast cast
RzILOpArgsMsb msb
RzILOpArgsAdd add
RzILOpArgsIsZero is_zero
op structure for blk (label -> data eff -> ctrl eff -> unit eff)
RzILOpEffect * data_eff
index of data_eff
const char * label
name of the label, const one
RzILOpEffect * ctrl_eff
index of ctrl_eff
op structure for repeat (bool -> data eff -> data eff)
RzILOpBool * condition
index of BOOL condition
RzILOpEffect * data_eff
index of data effect
Definition: dis.c:32
RzILVarKind
Definition: variable.h:46
ut64(WINAPI *w32_GetEnabledXStateFeatures)()