kempe-0.1.1.0: Kempe compiler
Safe HaskellSafe-Inferred
LanguageHaskell2010

Kempe.Asm.X86.Type

Documentation

data X86 reg a Source #

Constructors

PushReg 

Fields

PushMem 

Fields

PopMem 

Fields

PopReg 

Fields

PushConst 

Fields

Jump 

Fields

Call 

Fields

CallBS 

Fields

Ret 

Fields

MovRA 

Fields

MovAR 

Fields

MovABool 

Fields

MovRR 

Fields

MovRC 

Fields

MovRL 

Fields

MovAC 

Fields

MovACi8 

Fields

MovACTag 

Fields

MovRCBool 

Fields

MovRCi8 

Fields

MovRCTag 

Fields

MovRWord 

Fields

AddRR 

Fields

SubRR 

Fields

XorRR 

Fields

ImulRR 

Fields

AddAC 

Fields

AddRC 

Fields

SubRC 

Fields

ShiftLRR 

Fields

ShiftRRR 

Fields

Label 

Fields

BSLabel 

Fields

Je 

Fields

Jne 

Fields

Jg 

Fields

Jge 

Fields

Jl 

Fields

Jle 

Fields

CmpAddrReg 

Fields

CmpRegReg 

Fields

CmpAddrBool 

Fields

CmpRegBool 

Fields

IdivR 

Fields

DivR 

Fields

Cqo 

Fields

AndRR 

Fields

OrRR 

Fields

PopcountRR 

Fields

NegR 

Fields

NasmMacro0 

Fields

Instances

Instances details
Functor (X86 reg) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

fmap :: (a -> b) -> X86 reg a -> X86 reg b #

(<$) :: a -> X86 reg b -> X86 reg a #

Generic (X86 reg a) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep (X86 reg a) :: Type -> Type #

Methods

from :: X86 reg a -> Rep (X86 reg a) x #

to :: Rep (X86 reg a) x -> X86 reg a #

(NFData a, NFData reg) => NFData (X86 reg a) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: X86 reg a -> () #

Pretty reg => Pretty (X86 reg a) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

pretty :: X86 reg a -> Doc ann

prettyList :: [X86 reg a] -> Doc ann

type Rep (X86 reg a) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

type Rep (X86 reg a) = D1 ('MetaData "X86" "Kempe.Asm.X86.Type" "kempe-0.1.1.0-inplace-kempe-modules" 'False) (((((C1 ('MetaCons "PushReg" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)) :+: (C1 ('MetaCons "PushMem" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "addr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg))) :+: C1 ('MetaCons "PopMem" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "addr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg))))) :+: (C1 ('MetaCons "PopReg" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "reg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)) :+: (C1 ('MetaCons "PushConst" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "iSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64)) :+: C1 ('MetaCons "Jump" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "label") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label))))) :+: ((C1 ('MetaCons "Call" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "label") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :+: (C1 ('MetaCons "CallBS" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "bslLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)) :+: C1 ('MetaCons "Ret" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) :+: (C1 ('MetaCons "MovRA" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "addrSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)))) :+: (C1 ('MetaCons "MovAR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: C1 ('MetaCons "MovABool" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "boolSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))))))) :+: (((C1 ('MetaCons "MovRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: (C1 ('MetaCons "MovRC" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "iSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) :+: C1 ('MetaCons "MovRL" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "bsLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))))) :+: (C1 ('MetaCons "MovAC" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "iSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) :+: (C1 ('MetaCons "MovACi8" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "i8Src") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int8))) :+: C1 ('MetaCons "MovACTag" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "tagSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))))) :+: ((C1 ('MetaCons "MovRCBool" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "boolSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))) :+: (C1 ('MetaCons "MovRCi8" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "i8Src") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int8))) :+: C1 ('MetaCons "MovRCTag" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "tagSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))))) :+: ((C1 ('MetaCons "MovRWord" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "wSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word))) :+: C1 ('MetaCons "AddRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rAdd1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rAdd2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)))) :+: (C1 ('MetaCons "SubRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rSub1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSub2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: C1 ('MetaCons "XorRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rXor1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rXor2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)))))))) :+: ((((C1 ('MetaCons "ImulRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rMul1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rMul2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: (C1 ('MetaCons "AddAC" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrAdd1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "iAdd2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) :+: C1 ('MetaCons "AddRC" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rAdd1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "iAdd2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))))) :+: (C1 ('MetaCons "SubRC" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rSub1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "iSub2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int64))) :+: (C1 ('MetaCons "ShiftLRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: C1 ('MetaCons "ShiftRRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)))))) :+: ((C1 ('MetaCons "Label" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "label") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :+: (C1 ('MetaCons "BSLabel" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "bsLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)) :+: C1 ('MetaCons "Je" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)))) :+: ((C1 ('MetaCons "Jne" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :+: C1 ('MetaCons "Jg" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label))) :+: (C1 ('MetaCons "Jge" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :+: C1 ('MetaCons "Jl" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)))))) :+: (((C1 ('MetaCons "Jle" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "jLabel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Label)) :+: (C1 ('MetaCons "CmpAddrReg" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "rCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: C1 ('MetaCons "CmpRegReg" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rCmp'") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))))) :+: (C1 ('MetaCons "CmpAddrBool" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "addrCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Addr reg)) :*: S1 ('MetaSel ('Just "bCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))) :+: (C1 ('MetaCons "CmpRegBool" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "bCmp") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8))) :+: C1 ('MetaCons "IdivR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "rDiv") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))))) :+: ((C1 ('MetaCons "DivR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "rDiv") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)) :+: (C1 ('MetaCons "Cqo" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "AndRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))))) :+: ((C1 ('MetaCons "OrRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg))) :+: C1 ('MetaCons "PopcountRR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "rDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)))) :+: (C1 ('MetaCons "NegR" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "rSrc") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 reg)) :+: C1 ('MetaCons "NasmMacro0" 'PrefixI 'True) (S1 ('MetaSel ('Just "ann") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "macroName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString))))))))

data Addr reg Source #

Constructors

Reg reg 
AddrRRPlus reg reg 
AddrRCPlus reg Int64 
AddrRCMinus reg Int64 
AddrRRScale reg reg Int64 

Instances

Instances details
Generic (Addr reg) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep (Addr reg) :: Type -> Type #

Methods

from :: Addr reg -> Rep (Addr reg) x #

to :: Rep (Addr reg) x -> Addr reg #

NFData reg => NFData (Addr reg) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: Addr reg -> () #

Pretty reg => Pretty (Addr reg) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

pretty :: Addr reg -> Doc ann

prettyList :: [Addr reg] -> Doc ann

type Rep (Addr reg) Source # 
Instance details

Defined in Kempe.Asm.X86.Type

data AbsReg Source #

Instances

Instances details
Eq AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

(==) :: AbsReg -> AbsReg -> Bool #

(/=) :: AbsReg -> AbsReg -> Bool #

Ord AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Generic AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep AbsReg :: Type -> Type #

Methods

from :: AbsReg -> Rep AbsReg x #

to :: Rep AbsReg x -> AbsReg #

NFData AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: AbsReg -> () #

Pretty AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

pretty :: AbsReg -> Doc ann

prettyList :: [AbsReg] -> Doc ann

type Rep AbsReg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

type Rep AbsReg = D1 ('MetaData "AbsReg" "Kempe.Asm.X86.Type" "kempe-0.1.1.0-inplace-kempe-modules" 'False) (((C1 ('MetaCons "DataPointer" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AllocReg64" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)) :+: C1 ('MetaCons "AllocReg8" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int)))) :+: (C1 ('MetaCons "CArg1" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CArg2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CArg3" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "CArg4" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CArg5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CArg6" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CRet" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ShiftExponent" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "QuotRes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RemRes" 'PrefixI 'False) (U1 :: Type -> Type)))))

data X86Reg Source #

Constructors

R8 
R9 
R10 
R11 
R12 
R13 
R14 
R15 
Rdi 
Rsi 
R8b 
R9b 
R10b 
R11b 
R12b 
R13b 
R14b 
R15b 
Sil 
Dil 
Rsp 
Rbp 
Rbx 
Rcx 
CH 
CL 
Rax 
Rdx 
AH 
AL 
DH 
DL 

Instances

Instances details
Bounded X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Enum X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Eq X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

(==) :: X86Reg -> X86Reg -> Bool #

(/=) :: X86Reg -> X86Reg -> Bool #

Ord X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Generic X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep X86Reg :: Type -> Type #

Methods

from :: X86Reg -> Rep X86Reg x #

to :: Rep X86Reg x -> X86Reg #

NFData X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: X86Reg -> () #

Pretty X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

pretty :: X86Reg -> Doc ann

prettyList :: [X86Reg] -> Doc ann

type Rep X86Reg Source # 
Instance details

Defined in Kempe.Asm.X86.Type

type Rep X86Reg = D1 ('MetaData "X86Reg" "Kempe.Asm.X86.Type" "kempe-0.1.1.0-inplace-kempe-modules" 'False) (((((C1 ('MetaCons "R8" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R9" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R10" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R11" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R12" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R13" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R14" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R15" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Rdi" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Rsi" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R8b" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R9b" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "R10b" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R11b" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "R12b" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R13b" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: ((((C1 ('MetaCons "R14b" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "R15b" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Sil" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Dil" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Rsp" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Rbp" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Rbx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Rcx" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "CH" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Rax" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Rdx" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "AH" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AL" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DH" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DL" 'PrefixI 'False) (U1 :: Type -> Type))))))

data ControlAnn Source #

Constructors

ControlAnn 

Fields

Instances

Instances details
Generic ControlAnn Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep ControlAnn :: Type -> Type #

NFData ControlAnn Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: ControlAnn -> () #

type Rep ControlAnn Source # 
Instance details

Defined in Kempe.Asm.X86.Type

type Rep ControlAnn = D1 ('MetaData "ControlAnn" "Kempe.Asm.X86.Type" "kempe-0.1.1.0-inplace-kempe-modules" 'False) (C1 ('MetaCons "ControlAnn" 'PrefixI 'True) ((S1 ('MetaSel ('Just "node") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Just "conn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Int])) :*: (S1 ('MetaSel ('Just "usesNode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set AbsReg)) :*: S1 ('MetaSel ('Just "defsNode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set AbsReg)))))

data Liveness Source #

Constructors

Liveness 

Fields

Instances

Instances details
Eq Liveness Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Generic Liveness Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Associated Types

type Rep Liveness :: Type -> Type #

Methods

from :: Liveness -> Rep Liveness x #

to :: Rep Liveness x -> Liveness #

NFData Liveness Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

rnf :: Liveness -> () #

Pretty Liveness Source # 
Instance details

Defined in Kempe.Asm.X86.Type

Methods

pretty :: Liveness -> Doc ann

prettyList :: [Liveness] -> Doc ann

type Rep Liveness Source # 
Instance details

Defined in Kempe.Asm.X86.Type

type Rep Liveness = D1 ('MetaData "Liveness" "Kempe.Asm.X86.Type" "kempe-0.1.1.0-inplace-kempe-modules" 'False) (C1 ('MetaCons "Liveness" 'PrefixI 'True) (S1 ('MetaSel ('Just "ins") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set AbsReg)) :*: S1 ('MetaSel ('Just "out") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Set AbsReg))))

prettyAsm :: Pretty reg => [X86 reg a] -> Doc ann Source #

prettyDebugAsm :: Pretty reg => [X86 reg Liveness] -> Doc ann Source #