foxdec-0.1.0.0: Formally Verified x86-64 Decompilation
Safe HaskellNone
LanguageHaskell2010

X86.Register

Synopsis

Documentation

data Register Source #

Instances

Instances details
Bounded Register Source # 
Instance details

Defined in X86.Register

Enum Register Source # 
Instance details

Defined in X86.Register

Eq Register Source # 
Instance details

Defined in X86.Register

Ord Register Source # 
Instance details

Defined in X86.Register

Read Register Source # 
Instance details

Defined in X86.Register

Show Register Source # 
Instance details

Defined in X86.Register

Generic Register Source # 
Instance details

Defined in X86.Register

Associated Types

type Rep Register :: Type -> Type #

Methods

from :: Register -> Rep Register x #

to :: Rep Register x -> Register #

ToJSON Register Source # 
Instance details

Defined in OutputGeneration.JSON

Serialize Register Source # 
Instance details

Defined in X86.Register

NFData Register Source # 
Instance details

Defined in X86.Register

Methods

rnf :: Register -> () #

HasSize Register Source # 
Instance details

Defined in X86.Register

Methods

sizeof :: Register -> Int Source #

HasSize Instruction Source # 
Instance details

Defined in X86.Instruction

type Rep Register Source # 
Instance details

Defined in X86.Register

type Rep Register = D1 ('MetaData "Register" "X86.Register" "foxdec-0.1.0.0-F8J4QQ8bsQELJyhc4kJb0m" 'False) ((((((C1 ('MetaCons "InvalidRegister" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RIP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EIP" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "RAX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EAX" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AH" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "AL" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RBX" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "EBX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BX" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BH" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RCX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ECX" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "CX" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CH" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CL" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "RDX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EDX" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DX" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DH" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "DL" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RDI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "EDI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DI" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "DIL" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RSI" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ESI" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SI" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "SIL" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "RSP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ESP" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "SP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "SPL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RBP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EBP" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "BP" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BPL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R15" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R15D" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R15W" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R15B" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R14" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R14D" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "R14W" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "R14B" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R13" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R13D" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R13W" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R13B" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R12" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "R12D" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R12W" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R12B" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R11" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R11D" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R11W" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R11B" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R10" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "R10D" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "R10W" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R10B" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R9" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R9D" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R9W" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R9B" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "R8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R8D" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R8W" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R8B" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DS" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ES" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FS" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "GS" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "SS" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EIZ" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "RIZ" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ST0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ST1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ST2" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "ST3" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ST4" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ST5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ST6" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ST7" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "YMM1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM2" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "YMM3" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "YMM4" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM5" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "YMM6" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM7" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "YMM8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM9" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "YMM10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM11" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "YMM12" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM13" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "YMM14" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "YMM15" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "XMM0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM1" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "XMM2" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "XMM3" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM4" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "XMM5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM6" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "XMM7" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM8" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "XMM9" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM10" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "XMM11" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM12" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "XMM13" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XMM14" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "XMM15" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TEMP" 'PrefixI 'False) (U1 :: Type -> Type))))))))

reg8 :: [Register] Source #

List of 8 bit registers

reg16 :: [Register] Source #

List of 16 bit registers

reg32 :: [Register] Source #

List of 32 bit registers

reg64 :: [Register] Source #

List of 64 bit registers

reg80 :: [Register] Source #

List of 80 bit registers

reg128 :: [Register] Source #

List of 128 bit registers

reg256 :: [Register] Source #

List of 256 bit registers

real :: Register -> Register Source #

Matches register names to the real registers E.g.: EAX is actually a part of RAX

overlapping :: Register -> [Register] Source #

Finds for a register all register that overlap with it. | These have the same real register (apart from special cases). | For example, RAX is overlapping with EAX, AX, AL, AH | AH is only overlapping with RAX, EAX, AX; but not AL