harpy-0.4: Runtime code generation for x86 machine codeSource codeContentsIndex
Harpy.X86Assembler
Portabilitynon-portable
Stabilityprovisional
Maintainer{magr,klee}@cs.tu-berlin.de
Description
A type class based layer on top of X86CodeGen which determines the addressing modes from the types of the operands.
Documentation
newtype Reg8 Source
Constructors
Reg8 Word8
show/hide Instances
cl :: Reg8Source
dl :: Reg8Source
bl :: Reg8Source
ah :: Reg8Source
ch :: Reg8Source
dh :: Reg8Source
bh :: Reg8Source
al :: Reg8Source
newtype Reg16 Source
Constructors
Reg16 Word8
show/hide Instances
cx :: Reg16Source
dx :: Reg16Source
bx :: Reg16Source
sp :: Reg16Source
bp :: Reg16Source
si :: Reg16Source
di :: Reg16Source
ax :: Reg16Source
newtype Reg32 Source
Constructors
Reg32 Word8
show/hide Instances
Eq Reg32
Show Reg32
Inc Reg32
Dec Reg32
Not Reg32
Neg Reg32
Mul Reg32
Div Reg32
Idiv Reg32
Push Reg32
Pop Reg32
Jmp Reg32
Call Reg32
Cmpxchg Addr Reg32
Cmpxchg Ind Reg32
Cmpxchg Reg32 Reg32
Xchg Addr Reg32
Xchg Ind Reg32
Xchg Reg32 Reg32
Xadd Addr Reg32
Xadd Ind Reg32
Xadd Reg32 Reg32
Add Addr Reg32
Add Ind Reg32
Add Reg32 Word32
Add Reg32 Addr
Add Reg32 Ind
Add Reg32 Reg32
Or Addr Reg32
Or Ind Reg32
Or Reg32 Word32
Or Reg32 Addr
Or Reg32 Ind
Or Reg32 Reg32
Adc Addr Reg32
Adc Ind Reg32
Adc Reg32 Word32
Adc Reg32 Addr
Adc Reg32 Ind
Adc Reg32 Reg32
Sbb Addr Reg32
Sbb Ind Reg32
Sbb Reg32 Word32
Sbb Reg32 Addr
Sbb Reg32 Ind
Sbb Reg32 Reg32
And Addr Reg32
And Ind Reg32
And Reg32 Word32
And Reg32 Addr
And Reg32 Ind
And Reg32 Reg32
Sub Addr Reg32
Sub Ind Reg32
Sub Reg32 Word32
Sub Reg32 Addr
Sub Reg32 Ind
Sub Reg32 Reg32
Xor Addr Reg32
Xor Ind Reg32
Xor Reg32 Word32
Xor Reg32 Addr
Xor Reg32 Ind
Xor Reg32 Reg32
Cmp Addr Reg32
Cmp Ind Reg32
Cmp Reg32 Word32
Cmp Reg32 Label
Cmp Reg32 Addr
Cmp Reg32 Ind
Cmp Reg32 Reg32
Test Addr Reg32
Test Ind Reg32
Test Reg32 Word32
Test Reg32 Reg32
Rol Reg32 Word8
Rol Reg32 Reg8
Ror Reg32 Word8
Ror Reg32 Reg8
Rcl Reg32 Word8
Rcl Reg32 Reg8
Rcr Reg32 Word8
Rcr Reg32 Reg8
Shl Reg32 Word8
Shl Reg32 Reg8
Shr Reg32 Word8
Shr Reg32 Reg8
Sar Reg32 Word8
Sar Reg32 Reg8
Sal Reg32 Word8
Sal Reg32 Reg8
Mov Addr Reg32
Mov Ind Reg32
Mov Reg32 Word32
Mov Reg32 Label
Mov Reg32 Addr
Mov Reg32 Ind
Mov Reg32 Reg32
Movsxb Reg32 Addr
Movsxb Reg32 Ind
Movsxb Reg32 Reg8
Movsxw Reg32 Addr
Movsxw Reg32 Ind
Movsxw Reg32 Reg16
Movzxb Reg32 Addr
Movzxb Reg32 Ind
Movzxb Reg32 Reg8
Movzxw Reg32 Addr
Movzxw Reg32 Ind
Movzxw Reg32 Reg16
Lea Reg32 Addr
Lea Reg32 Ind
Cmova Reg32 Addr
Cmova Reg32 Ind
Cmova Reg32 Reg32
Cmovae Reg32 Addr
Cmovae Reg32 Ind
Cmovae Reg32 Reg32
Cmovb Reg32 Addr
Cmovb Reg32 Ind
Cmovb Reg32 Reg32
Cmovbe Reg32 Addr
Cmovbe Reg32 Ind
Cmovbe Reg32 Reg32
Cmovc Reg32 Addr
Cmovc Reg32 Ind
Cmovc Reg32 Reg32
Cmove Reg32 Addr
Cmove Reg32 Ind
Cmove Reg32 Reg32
Cmovna Reg32 Addr
Cmovna Reg32 Ind
Cmovna Reg32 Reg32
Cmovnae Reg32 Addr
Cmovnae Reg32 Ind
Cmovnae Reg32 Reg32
Cmovnb Reg32 Addr
Cmovnb Reg32 Ind
Cmovnb Reg32 Reg32
Cmovnbe Reg32 Addr
Cmovnbe Reg32 Ind
Cmovnbe Reg32 Reg32
Cmovnc Reg32 Addr
Cmovnc Reg32 Ind
Cmovnc Reg32 Reg32
Cmovne Reg32 Addr
Cmovne Reg32 Ind
Cmovne Reg32 Reg32
Cmovnp Reg32 Addr
Cmovnp Reg32 Ind
Cmovnp Reg32 Reg32
Cmovnz Reg32 Addr
Cmovnz Reg32 Ind
Cmovnz Reg32 Reg32
Cmovp Reg32 Addr
Cmovp Reg32 Ind
Cmovp Reg32 Reg32
Cmovpe Reg32 Addr
Cmovpe Reg32 Ind
Cmovpe Reg32 Reg32
Cmovpo Reg32 Addr
Cmovpo Reg32 Ind
Cmovpo Reg32 Reg32
Cmovz Reg32 Addr
Cmovz Reg32 Ind
Cmovz Reg32 Reg32
Cmovg Reg32 Addr
Cmovg Reg32 Ind
Cmovg Reg32 Reg32
Cmovge Reg32 Addr
Cmovge Reg32 Ind
Cmovge Reg32 Reg32
Cmovl Reg32 Addr
Cmovl Reg32 Ind
Cmovl Reg32 Reg32
Cmovle Reg32 Addr
Cmovle Reg32 Ind
Cmovle Reg32 Reg32
Cmovng Reg32 Addr
Cmovng Reg32 Ind
Cmovng Reg32 Reg32
Cmovnge Reg32 Addr
Cmovnge Reg32 Ind
Cmovnge Reg32 Reg32
Cmovnl Reg32 Addr
Cmovnl Reg32 Ind
Cmovnl Reg32 Reg32
Cmovnle Reg32 Addr
Cmovnle Reg32 Ind
Cmovnle Reg32 Reg32
Cmovno Reg32 Addr
Cmovno Reg32 Ind
Cmovno Reg32 Reg32
Cmovns Reg32 Addr
Cmovns Reg32 Ind
Cmovns Reg32 Reg32
Cmovo Reg32 Addr
Cmovo Reg32 Ind
Cmovo Reg32 Reg32
Cmovs Reg32 Addr
Cmovs Reg32 Ind
Cmovs Reg32 Reg32
Shrd Reg32 Reg32 Word8
Shrd Reg32 Reg32 Reg8
Shld Reg32 Reg32 Word8
Shld Reg32 Reg32 Reg8
Imul InPlace Reg32 Addr
Imul InPlace Reg32 Ind
Imul InPlace Reg32 Reg32
Imul Reg32 Addr Word32
Imul Reg32 Ind Word32
Imul Reg32 Reg32 Word32
Imul InPlace Reg32 ((,) Disp Reg32)
Add Reg32 ((,) Disp Reg32)
Or Reg32 ((,) Disp Reg32)
Adc Reg32 ((,) Disp Reg32)
Sbb Reg32 ((,) Disp Reg32)
And Reg32 ((,) Disp Reg32)
Sub Reg32 ((,) Disp Reg32)
Xor Reg32 ((,) Disp Reg32)
Cmp Reg32 ((,) Disp Reg32)
Mov Reg32 ((,) Disp Reg32)
Movsxb Reg32 ((,) Disp Reg32)
Movsxw Reg32 ((,) Disp Reg32)
Movzxb Reg32 ((,) Disp Reg32)
Movzxw Reg32 ((,) Disp Reg32)
Lea Reg32 ((,) Disp Reg32)
Cmova Reg32 ((,) Disp Reg32)
Cmovae Reg32 ((,) Disp Reg32)
Cmovb Reg32 ((,) Disp Reg32)
Cmovbe Reg32 ((,) Disp Reg32)
Cmovc Reg32 ((,) Disp Reg32)
Cmove Reg32 ((,) Disp Reg32)
Cmovna Reg32 ((,) Disp Reg32)
Cmovnae Reg32 ((,) Disp Reg32)
Cmovnb Reg32 ((,) Disp Reg32)
Cmovnbe Reg32 ((,) Disp Reg32)
Cmovnc Reg32 ((,) Disp Reg32)
Cmovne Reg32 ((,) Disp Reg32)
Cmovnp Reg32 ((,) Disp Reg32)
Cmovnz Reg32 ((,) Disp Reg32)
Cmovp Reg32 ((,) Disp Reg32)
Cmovpe Reg32 ((,) Disp Reg32)
Cmovpo Reg32 ((,) Disp Reg32)
Cmovz Reg32 ((,) Disp Reg32)
Cmovg Reg32 ((,) Disp Reg32)
Cmovge Reg32 ((,) Disp Reg32)
Cmovl Reg32 ((,) Disp Reg32)
Cmovle Reg32 ((,) Disp Reg32)
Cmovng Reg32 ((,) Disp Reg32)
Cmovnge Reg32 ((,) Disp Reg32)
Cmovnl Reg32 ((,) Disp Reg32)
Cmovnle Reg32 ((,) Disp Reg32)
Cmovno Reg32 ((,) Disp Reg32)
Cmovns Reg32 ((,) Disp Reg32)
Cmovo Reg32 ((,) Disp Reg32)
Cmovs Reg32 ((,) Disp Reg32)
Imul Reg32 ((,) Disp Reg32) Word32
Mov Reg32 ((,,) Disp Reg32 Scale)
Mov Reg32 ((,,) Reg32 Reg32 Scale)
Movsxb Reg32 ((,,) Disp Reg32 Scale)
Movsxb Reg32 ((,,) Reg32 Reg32 Scale)
Movsxw Reg32 ((,,) Disp Reg32 Scale)
Movsxw Reg32 ((,,) Reg32 Reg32 Scale)
Movzxb Reg32 ((,,) Disp Reg32 Scale)
Movzxb Reg32 ((,,) Reg32 Reg32 Scale)
Movzxw Reg32 ((,,) Disp Reg32 Scale)
Movzxw Reg32 ((,,) Reg32 Reg32 Scale)
Lea Reg32 ((,,) Disp Reg32 Scale)
Lea Reg32 ((,,) Reg32 Reg32 Scale)
Mov Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Movsxb Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Movsxw Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Movzxb Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Movzxw Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Lea Reg32 ((,,,) Disp Reg32 Reg32 Scale)
Cmpxchg ((,) Disp Reg32) Reg32
Xchg ((,) Disp Reg32) Reg32
Xadd ((,) Disp Reg32) Reg32
Add ((,) Disp Reg32) Reg32
Or ((,) Disp Reg32) Reg32
Adc ((,) Disp Reg32) Reg32
Sbb ((,) Disp Reg32) Reg32
And ((,) Disp Reg32) Reg32
Sub ((,) Disp Reg32) Reg32
Xor ((,) Disp Reg32) Reg32
Cmp ((,) Disp Reg32) Reg32
Test ((,) Disp Reg32) Reg32
Mov ((,) Disp Reg32) Reg32
Mov ((,,) Disp Reg32 Scale) Reg32
Mov ((,,) Reg32 Reg32 Scale) Reg32
Mov ((,,,) Disp Reg32 Reg32 Scale) Reg32
ecx :: Reg32Source
edx :: Reg32Source
ebx :: Reg32Source
esp :: Reg32Source
ebp :: Reg32Source
esi :: Reg32Source
edi :: Reg32Source
eax :: Reg32Source
newtype XMMReg Source
Constructors
XMMReg Word8
show/hide Instances
Sqrtsd XMMReg Addr
Sqrtsd XMMReg Ind
Sqrtsd XMMReg XMMReg
Sqrtss XMMReg Addr
Sqrtss XMMReg Ind
Sqrtss XMMReg XMMReg
Sqrtpd XMMReg Addr
Sqrtpd XMMReg Ind
Sqrtpd XMMReg XMMReg
Sqrtps XMMReg Addr
Sqrtps XMMReg Ind
Sqrtps XMMReg XMMReg
Addsd XMMReg Addr
Addsd XMMReg Ind
Addsd XMMReg XMMReg
Addss XMMReg Addr
Addss XMMReg Ind
Addss XMMReg XMMReg
Addpd XMMReg Addr
Addpd XMMReg Ind
Addpd XMMReg XMMReg
Addps XMMReg Addr
Addps XMMReg Ind
Addps XMMReg XMMReg
Subsd XMMReg Addr
Subsd XMMReg Ind
Subsd XMMReg XMMReg
Subss XMMReg Addr
Subss XMMReg Ind
Subss XMMReg XMMReg
Subpd XMMReg Addr
Subpd XMMReg Ind
Subpd XMMReg XMMReg
Subps XMMReg Addr
Subps XMMReg Ind
Subps XMMReg XMMReg
Mulsd XMMReg Addr
Mulsd XMMReg Ind
Mulsd XMMReg XMMReg
Mulss XMMReg Addr
Mulss XMMReg Ind
Mulss XMMReg XMMReg
Mulpd XMMReg Addr
Mulpd XMMReg Ind
Mulpd XMMReg XMMReg
Mulps XMMReg Addr
Mulps XMMReg Ind
Mulps XMMReg XMMReg
Divsd XMMReg Addr
Divsd XMMReg Ind
Divsd XMMReg XMMReg
Divss XMMReg Addr
Divss XMMReg Ind
Divss XMMReg XMMReg
Divpd XMMReg Addr
Divpd XMMReg Ind
Divpd XMMReg XMMReg
Divps XMMReg Addr
Divps XMMReg Ind
Divps XMMReg XMMReg
Minsd XMMReg Addr
Minsd XMMReg Ind
Minsd XMMReg XMMReg
Minss XMMReg Addr
Minss XMMReg Ind
Minss XMMReg XMMReg
Minpd XMMReg Addr
Minpd XMMReg Ind
Minpd XMMReg XMMReg
Minps XMMReg Addr
Minps XMMReg Ind
Minps XMMReg XMMReg
Maxsd XMMReg Addr
Maxsd XMMReg Ind
Maxsd XMMReg XMMReg
Maxss XMMReg Addr
Maxss XMMReg Ind
Maxss XMMReg XMMReg
Maxpd XMMReg Addr
Maxpd XMMReg Ind
Maxpd XMMReg XMMReg
Maxps XMMReg Addr
Maxps XMMReg Ind
Maxps XMMReg XMMReg
Movsd Addr XMMReg
Movsd Ind XMMReg
Movsd XMMReg Addr
Movsd XMMReg Ind
Movsd XMMReg XMMReg
Comisd XMMReg Addr
Comisd XMMReg Ind
Comisd XMMReg XMMReg
Comiss XMMReg Addr
Comiss XMMReg Ind
Comiss XMMReg XMMReg
Ucomisd XMMReg Addr
Ucomisd XMMReg Ind
Ucomisd XMMReg XMMReg
Ucomiss XMMReg Addr
Ucomiss XMMReg Ind
Ucomiss XMMReg XMMReg
Sqrtsd XMMReg ((,) Disp Reg32)
Sqrtss XMMReg ((,) Disp Reg32)
Sqrtpd XMMReg ((,) Disp Reg32)
Sqrtps XMMReg ((,) Disp Reg32)
Addsd XMMReg ((,) Disp Reg32)
Addss XMMReg ((,) Disp Reg32)
Addpd XMMReg ((,) Disp Reg32)
Addps XMMReg ((,) Disp Reg32)
Subsd XMMReg ((,) Disp Reg32)
Subss XMMReg ((,) Disp Reg32)
Subpd XMMReg ((,) Disp Reg32)
Subps XMMReg ((,) Disp Reg32)
Mulsd XMMReg ((,) Disp Reg32)
Mulss XMMReg ((,) Disp Reg32)
Mulpd XMMReg ((,) Disp Reg32)
Mulps XMMReg ((,) Disp Reg32)
Divsd XMMReg ((,) Disp Reg32)
Divss XMMReg ((,) Disp Reg32)
Divpd XMMReg ((,) Disp Reg32)
Divps XMMReg ((,) Disp Reg32)
Minsd XMMReg ((,) Disp Reg32)
Minss XMMReg ((,) Disp Reg32)
Minpd XMMReg ((,) Disp Reg32)
Minps XMMReg ((,) Disp Reg32)
Maxsd XMMReg ((,) Disp Reg32)
Maxss XMMReg ((,) Disp Reg32)
Maxpd XMMReg ((,) Disp Reg32)
Maxps XMMReg ((,) Disp Reg32)
Movsd XMMReg ((,) Disp Reg32)
Comisd XMMReg ((,)