Module Arm_lifter.CPU

include module type of Arm_env
val spsr : Bap.Std.var

spsr Saved Processor Status Register

val cpsr : Bap.Std.var

cpsr Current Processor Status Register

val qf : Bap.Std.var

qf underflow (saturation) Flag

val ge : Bap.Std.var array

ge array of general registers

val itstate : Bap.Std.var

itstate ITSTATE register

val lr : Bap.Std.var

lr Link Register

val pc : Bap.Std.var

pc Program Counter

val r0 : Bap.Std.var

general purpose register

val r1 : Bap.Std.var

general purpose register

val r2 : Bap.Std.var

general purpose register

val r3 : Bap.Std.var

general purpose register

val r4 : Bap.Std.var

general purpose register

val r5 : Bap.Std.var

general purpose register

val r6 : Bap.Std.var

general purpose register

val r7 : Bap.Std.var

general purpose register

val r8 : Bap.Std.var

general purpose register

val r9 : Bap.Std.var

general purpose register

val r10 : Bap.Std.var

general purpose register

val r11 : Bap.Std.var

general purpose register

val r12 : Bap.Std.var

general purpose register

val of_reg : Arm_types.reg -> Bap.Std.var

of_reg arm_reg lifts arm register into BIL variable

val new_var : string -> Bap.Std.var

new_var name creates a freshly new variable prefixed with name

include Bap.Std.CPU

A set of general purpose registers

val mem : Bap.Std.var

Memory

val sp : Bap.Std.var

Stack pointer

Flag registers
val zf : Bap.Std.var

zero flag

val cf : Bap.Std.var

carry flag

val vf : Bap.Std.var

overflow flag

val nf : Bap.Std.var

negative flag

Predicates

val is_reg : Bap.Std.var -> bool

is_reg var true if var is a processor register

val is_flag : Bap.Std.var -> bool

is_flag reg is true if reg is a flag register

val is_sp : Bap.Std.var -> bool

is_sp x = Var.same x sp

val is_bp : Bap.Std.var -> bool

is_bp x is true if x can be possibly used as a base pointer register.

val is_zf : Bap.Std.var -> bool

is_zf x = Var.same x zf

val is_cf : Bap.Std.var -> bool

is_cf x = Var.same x cf

val is_vf : Bap.Std.var -> bool

is_vf x = Var.same x vf

val is_nf : Bap.Std.var -> bool

is_nf x = Var.same x nf

val is_mem : Bap.Std.var -> bool

is_mem x = Var.same x mem