Module Arm_mem_shift

val lift_r_exp : dest1:Arm_types.op -> ?⁠dest2:Arm_types.op -> base:Arm_types.op -> offset:Bap.Std.exp -> Arm_types.mode_r -> Arm_types.sign -> Arm_types.size -> Arm_types.operation -> Bap.Std.stmt list
val lift_r_op : dest1:Arm_types.op -> ?⁠dest2:Arm_types.op -> ?⁠shift:Arm_types.op -> base:Arm_types.op -> offset:Arm_types.op -> Arm_types.mode_r -> Arm_types.sign -> Arm_types.size -> Arm_types.operation -> Bap.Std.stmt list
val lift_m : Arm_types.op list -> Arm_types.op -> Arm_types.mode_m -> Arm_types.update_m -> Arm_types.operation -> Bap.Std.stmt list
val repair_imm : Bap.Std.word -> sign_mask:int -> imm_mask:int -> Arm_types.repair -> Bap.Std.exp

takes a word and converts it to an exp that is the offset for some memory instructions sign_mask - a bitmask that determines the bit in src that is the repair bit imm_mask - a bitmask that determines which bits in src are the immediate type - whether a set mask indicates a positive or negative immediate. *

val repair_reg : Bap.Std.exp -> Bap.Std.word -> sign_mask:int -> Arm_types.repair -> Bap.Std.exp
val mem_offset_reg_or_imm_neg : Arm_types.op -> Bap.Std.word -> Bap.Std.exp
val mem_offset_reg_or_imm_pos : Arm_types.op -> Bap.Std.word -> Bap.Std.exp