X86_cpu.AMD64AMD64 registers
include module type of IA32IA32 Architecture Registers.
For simplicity we're using the same names for registers in 32 and 64 mode. For example, the A register, has a name rax on both 32-bit and 64-bit processors. However, on the former it is 32-bit (contrary to the name), and on the latter it is 64-bit.
include Bap.Std.CPUval gpr : Bap.Std.Var.Set.tA set of general purpose registers
val mem : Bap.Std.varMemory
val sp : Bap.Std.varStack pointer
val zf : Bap.Std.varzero flag
val cf : Bap.Std.varcarry flag
val vf : Bap.Std.varoverflow flag
val nf : Bap.Std.varnegative flag
val is_reg : Bap.Std.var -> boolis_reg var true if var is a processor register
val is_flag : Bap.Std.var -> boolis_flag reg is true if reg is a flag register
val is_sp : Bap.Std.var -> boolis_sp x = Var.same x sp
val is_bp : Bap.Std.var -> boolis_bp x is true if x can be possibly used as a base pointer register.
val is_zf : Bap.Std.var -> boolis_zf x = Var.same x zf
val is_cf : Bap.Std.var -> boolis_cf x = Var.same x cf
val is_vf : Bap.Std.var -> boolis_vf x = Var.same x vf
val is_nf : Bap.Std.var -> boolis_nf x = Var.same x nf
val is_mem : Bap.Std.var -> boolis_mem x = Var.same x mem
val flags : Bap.Std.Var.Set.tflags is a set of flag registers
val rbp : Bap.Std.varbase pointer
val rsp : Bap.Std.varstack pointer
val rsi : Bap.Std.varsource index
val rdi : Bap.Std.vardestination index
val rip : Bap.Std.varinstruction pointer
val rax : Bap.Std.varaccumulator register
val rbx : Bap.Std.varbase register
val rcx : Bap.Std.varcounter register
val rdx : Bap.Std.vardata register
val ymms : Bap.Std.var arrayYMM registers that are available
val r : Bap.Std.var arrayr8-r15 registers. Due to a legacy issues r.(0) -> r8, r.(1) -> r8, ...