Rizin
unix-like reverse engineering framework and cli tools
rz_il_op_pure_t Struct Reference

An IL op performing a pure computation, 'a pure. More...

#include <rz_il_opcodes.h>

Public Attributes

RzILOpPureCode code
 
union {
   RzILOpArgsIte   ite
 
   RzILOpArgsVar   var
 
   RzILOpArgsLet   let
 
   RzILOpArgsBoolAnd   booland
 
   RzILOpArgsBoolOr   boolor
 
   RzILOpArgsBoolXor   boolxor
 
   RzILOpArgsBoolInv   boolinv
 
   RzILOpArgsBv   bitv
 
   RzILOpArgsMsb   msb
 
   RzILOpArgsLsb   lsb
 
   RzILOpArgsIsZero   is_zero
 
   RzILOpArgsEq   eq
 
   RzILOpArgsUle   ule
 
   RzILOpArgsSle   sle
 
   RzILOpArgsCast   cast
 
   RzILOpArgsNeg   neg
 
   RzILOpArgsLogNot   lognot
 
   RzILOpArgsAdd   add
 
   RzILOpArgsSub   sub
 
   RzILOpArgsMul   mul
 
   RzILOpArgsDiv   div
 
   RzILOpArgsSdiv   sdiv
 
   RzILOpArgsSmod   smod
 
   RzILOpArgsMod   mod
 
   RzILOpArgsLogand   logand
 
   RzILOpArgsLogor   logor
 
   RzILOpArgsLogxor   logxor
 
   RzILOpArgsShiftLeft   shiftl
 
   RzILOpArgsShiftRight   shiftr
 
   RzILOpArgsAppend   append
 
   RzILOpArgsLoad   load
 
   RzILOpArgsLoadW   loadw
 
op
 

Detailed Description

An IL op performing a pure computation, 'a pure.

BAP uses ocaml's type system for statically differentiating between different kinds of pure ops. Some ops however are polymorphic over all pure types, such as ite : bool -> 'a pure -> 'a pure -> 'a pure, which is not directly possible in C. So our pure ops are dynamically typed (only on the level of C, the IL is still fully statically typed) and we simply use typedefs like RzILOpBool and RzILOpBitVector to at least weakly indicate which concrete type is required.

Definition at line 399 of file rz_il_opcodes.h.

Member Data Documentation

◆ add

RzILOpArgsAdd rz_il_op_pure_t::add

Definition at line 421 of file rz_il_opcodes.h.

◆ append

RzILOpArgsAppend rz_il_op_pure_t::append

Definition at line 433 of file rz_il_opcodes.h.

◆ bitv

RzILOpArgsBv rz_il_op_pure_t::bitv

Definition at line 411 of file rz_il_opcodes.h.

Referenced by rz_il_op_new_bitv_from_st64(), and rz_il_op_new_bitv_from_ut64().

◆ booland

RzILOpArgsBoolAnd rz_il_op_pure_t::booland

Definition at line 406 of file rz_il_opcodes.h.

◆ boolinv

RzILOpArgsBoolInv rz_il_op_pure_t::boolinv

Definition at line 409 of file rz_il_opcodes.h.

◆ boolor

RzILOpArgsBoolOr rz_il_op_pure_t::boolor

Definition at line 407 of file rz_il_opcodes.h.

◆ boolxor

RzILOpArgsBoolXor rz_il_op_pure_t::boolxor

Definition at line 408 of file rz_il_opcodes.h.

◆ cast

RzILOpArgsCast rz_il_op_pure_t::cast

Definition at line 418 of file rz_il_opcodes.h.

◆ code

RzILOpPureCode rz_il_op_pure_t::code

Definition at line 400 of file rz_il_opcodes.h.

Referenced by rz_il_op_new_bitv_from_st64(), and rz_il_op_new_bitv_from_ut64().

◆ div

RzILOpArgsDiv rz_il_op_pure_t::div

Definition at line 424 of file rz_il_opcodes.h.

◆ eq

RzILOpArgsEq rz_il_op_pure_t::eq

Definition at line 415 of file rz_il_opcodes.h.

◆ is_zero

RzILOpArgsIsZero rz_il_op_pure_t::is_zero

Definition at line 414 of file rz_il_opcodes.h.

◆ ite

RzILOpArgsIte rz_il_op_pure_t::ite

Definition at line 402 of file rz_il_opcodes.h.

◆ let

RzILOpArgsLet rz_il_op_pure_t::let

Definition at line 404 of file rz_il_opcodes.h.

◆ load

RzILOpArgsLoad rz_il_op_pure_t::load

Definition at line 435 of file rz_il_opcodes.h.

◆ loadw

RzILOpArgsLoadW rz_il_op_pure_t::loadw

Definition at line 436 of file rz_il_opcodes.h.

◆ logand

RzILOpArgsLogand rz_il_op_pure_t::logand

Definition at line 428 of file rz_il_opcodes.h.

◆ lognot

RzILOpArgsLogNot rz_il_op_pure_t::lognot

Definition at line 420 of file rz_il_opcodes.h.

◆ logor

RzILOpArgsLogor rz_il_op_pure_t::logor

Definition at line 429 of file rz_il_opcodes.h.

◆ logxor

RzILOpArgsLogxor rz_il_op_pure_t::logxor

Definition at line 430 of file rz_il_opcodes.h.

◆ lsb

RzILOpArgsLsb rz_il_op_pure_t::lsb

Definition at line 413 of file rz_il_opcodes.h.

◆ mod

RzILOpArgsMod rz_il_op_pure_t::mod

Definition at line 427 of file rz_il_opcodes.h.

◆ msb

RzILOpArgsMsb rz_il_op_pure_t::msb

Definition at line 412 of file rz_il_opcodes.h.

◆ mul

RzILOpArgsMul rz_il_op_pure_t::mul

Definition at line 423 of file rz_il_opcodes.h.

◆ neg

RzILOpArgsNeg rz_il_op_pure_t::neg

Definition at line 419 of file rz_il_opcodes.h.

◆ 

union { ... } rz_il_op_pure_t::op

◆ sdiv

RzILOpArgsSdiv rz_il_op_pure_t::sdiv

Definition at line 425 of file rz_il_opcodes.h.

◆ shiftl

RzILOpArgsShiftLeft rz_il_op_pure_t::shiftl

Definition at line 431 of file rz_il_opcodes.h.

◆ shiftr

RzILOpArgsShiftRight rz_il_op_pure_t::shiftr

Definition at line 432 of file rz_il_opcodes.h.

◆ sle

RzILOpArgsSle rz_il_op_pure_t::sle

Definition at line 417 of file rz_il_opcodes.h.

◆ smod

RzILOpArgsSmod rz_il_op_pure_t::smod

Definition at line 426 of file rz_il_opcodes.h.

◆ sub

RzILOpArgsSub rz_il_op_pure_t::sub

Definition at line 422 of file rz_il_opcodes.h.

◆ ule

RzILOpArgsUle rz_il_op_pure_t::ule

Definition at line 416 of file rz_il_opcodes.h.

◆ var

RzILOpArgsVar rz_il_op_pure_t::var

Definition at line 403 of file rz_il_opcodes.h.


The documentation for this struct was generated from the following file: