hapstone-0.1.0.1: Capstone bindings for Haskell

Copyright(c) Inokentiy Babushkin, 2016
LicenseBSD3
MaintainerInokentiy Babushkin <inokentiy.babushkin@googlemail.com>
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell2010

Hapstone.Internal.Arm

Description

This module contains ARM specific datatypes and their respective Storable instances. Most of the types are used internally and can be looked up here. Some of them are currently unused, as the headers only define them as symbolic constants whose type is never used explicitly, which poses a problem for a memory-safe port to the Haskell language, this is about to get fixed in a future version.

Apart from that, because the module is generated using C2HS, some of the documentation is misplaced or rendered incorrectly, so if in doubt, read the source file.

Synopsis

Documentation

data ArmMemBarrier Source

memory barrier operands (map directly to the 4-bit encoding of the option field for Memory Barrier operations, when given as an integer)

data ArmSetendType Source

operand type for SETEND instruction

data ArmOpMemStruct Source

Constructors

ArmOpMemStruct 

Fields

base :: Word32

base register

index :: Word32

index register

scale :: Int32

scale for index register (1 or -1)

disp :: Int32

displacement/offset value

data CsArmOpValue Source

possible operand types (corresponding to the tagged union in the C header)

Constructors

Reg Word32

register value for ArmOpReg operands

Sysreg Word32

register value for ArmOpSysreg operands

Imm Int32

immediate value for ArmOpImm operands

Cimm Int32

immediate value for ArmOpCimm operands

Pimm Int32

immediate value for ArmOpPimm operands

Fp Double

floating point value for ArmOpFp operands

Mem ArmOpMemStruct

base,index,scale,disp value for ArmOpMem operands

Setend ArmSetendType

SETEND instruction's operand type

Undefined

invalid operand value, for ArmOpInvalid operand

data CsArmOp Source

instruction operands

Constructors

CsArmOp 

Fields

vectorIndex :: Int32

vector index for some vector operands, else -1

shift :: (ArmShifter, Word32)

shifter type and value

value :: CsArmOpValue

operand type and value

subtracted :: Bool

if True, operand is subtracted, else added

data CsArm Source

instruction datatype

Constructors

CsArm 

Fields

usermode :: Bool

usermode registers to be loaded (for LDM/STM instructions)

vectorSize :: Int32

scalar size for vector instructions

vectorData :: ArmVectordataType

data type for elements of vector instructions

cpsMode :: ArmCpsmodeType

CPS mode for CPS instructions

cpsFlag :: ArmCpsflagType

CPS mode for CPS instructions

cc :: ArmConditionCode
 
updateFlags :: Bool
 
writeback :: Bool

does this instruction request writeback?

memBarrier :: ArmMemBarrier

options for some memory barrier instructions

operands :: [CsArmOp]

operand list of this instruction, *MUST* have <= 36 elements, else you'll get a runtime error when you (implicitly) try to write it to memory via it's Storable instance

data ArmInsn Source

ARM instructions

Constructors

ArmInsInvalid 
ArmInsAdc 
ArmInsAdd 
ArmInsAdr 
ArmInsAesd 
ArmInsAese 
ArmInsAesimc 
ArmInsAesmc 
ArmInsAnd 
ArmInsBfc 
ArmInsBfi 
ArmInsBic 
ArmInsBkpt 
ArmInsBl 
ArmInsBlx 
ArmInsBx 
ArmInsBxj 
ArmInsB 
ArmInsCdp 
ArmInsCdp2 
ArmInsClrex 
ArmInsClz 
ArmInsCmn 
ArmInsCmp 
ArmInsCps 
ArmInsCrc32b 
ArmInsCrc32cb 
ArmInsCrc32ch 
ArmInsCrc32cw 
ArmInsCrc32h 
ArmInsCrc32w 
ArmInsDbg 
ArmInsDmb 
ArmInsDsb 
ArmInsEor 
ArmInsVmov 
ArmInsFldmdbx 
ArmInsFldmiax 
ArmInsVmrs 
ArmInsFstmdbx 
ArmInsFstmiax 
ArmInsHint 
ArmInsHlt 
ArmInsIsb 
ArmInsLda 
ArmInsLdab 
ArmInsLdaex 
ArmInsLdaexb 
ArmInsLdaexd 
ArmInsLdaexh 
ArmInsLdah 
ArmInsLdc2l 
ArmInsLdc2 
ArmInsLdcl 
ArmInsLdc 
ArmInsLdmda 
ArmInsLdmdb 
ArmInsLdm 
ArmInsLdmib 
ArmInsLdrbt 
ArmInsLdrb 
ArmInsLdrd 
ArmInsLdrex 
ArmInsLdrexb 
ArmInsLdrexd 
ArmInsLdrexh 
ArmInsLdrh 
ArmInsLdrht 
ArmInsLdrsb 
ArmInsLdrsbt 
ArmInsLdrsh 
ArmInsLdrsht 
ArmInsLdrt 
ArmInsLdr 
ArmInsMcr 
ArmInsMcr2 
ArmInsMcrr 
ArmInsMcrr2 
ArmInsMla 
ArmInsMls 
ArmInsMov 
ArmInsMovt 
ArmInsMovw 
ArmInsMrc 
ArmInsMrc2 
ArmInsMrrc 
ArmInsMrrc2 
ArmInsMrs 
ArmInsMsr 
ArmInsMul 
ArmInsMvn 
ArmInsOrr 
ArmInsPkhbt 
ArmInsPkhtb 
ArmInsPldw 
ArmInsPld 
ArmInsPli 
ArmInsQadd 
ArmInsQadd16 
ArmInsQadd8 
ArmInsQasx 
ArmInsQdadd 
ArmInsQdsub 
ArmInsQsax 
ArmInsQsub 
ArmInsQsub16 
ArmInsQsub8 
ArmInsRbit 
ArmInsRev 
ArmInsRev16 
ArmInsRevsh 
ArmInsRfeda 
ArmInsRfedb 
ArmInsRfeia 
ArmInsRfeib 
ArmInsRsb 
ArmInsRsc 
ArmInsSadd16 
ArmInsSadd8 
ArmInsSasx 
ArmInsSbc 
ArmInsSbfx 
ArmInsSdiv 
ArmInsSel 
ArmInsSetend 
ArmInsSha1c 
ArmInsSha1h 
ArmInsSha1m 
ArmInsSha1p 
ArmInsSha1su0 
ArmInsSha1su1 
ArmInsSha256h 
ArmInsSha256h2 
ArmInsSha256su0 
ArmInsSha256su1 
ArmInsShadd16 
ArmInsShadd8 
ArmInsShasx 
ArmInsShsax 
ArmInsShsub16 
ArmInsShsub8 
ArmInsSmc 
ArmInsSmlabb 
ArmInsSmlabt 
ArmInsSmlad 
ArmInsSmladx 
ArmInsSmlal 
ArmInsSmlalbb 
ArmInsSmlalbt 
ArmInsSmlald 
ArmInsSmlaldx 
ArmInsSmlaltb 
ArmInsSmlaltt 
ArmInsSmlatb 
ArmInsSmlatt 
ArmInsSmlawb 
ArmInsSmlawt 
ArmInsSmlsd 
ArmInsSmlsdx 
ArmInsSmlsld 
ArmInsSmlsldx 
ArmInsSmmla 
ArmInsSmmlar 
ArmInsSmmls 
ArmInsSmmlsr 
ArmInsSmmul 
ArmInsSmmulr 
ArmInsSmuad 
ArmInsSmuadx 
ArmInsSmulbb 
ArmInsSmulbt 
ArmInsSmull 
ArmInsSmultb 
ArmInsSmultt 
ArmInsSmulwb 
ArmInsSmulwt 
ArmInsSmusd 
ArmInsSmusdx 
ArmInsSrsda 
ArmInsSrsdb 
ArmInsSrsia 
ArmInsSrsib 
ArmInsSsat 
ArmInsSsat16 
ArmInsSsax 
ArmInsSsub16 
ArmInsSsub8 
ArmInsStc2l 
ArmInsStc2 
ArmInsStcl 
ArmInsStc 
ArmInsStl 
ArmInsStlb 
ArmInsStlex 
ArmInsStlexb 
ArmInsStlexd 
ArmInsStlexh 
ArmInsStlh 
ArmInsStmda 
ArmInsStmdb 
ArmInsStm 
ArmInsStmib 
ArmInsStrbt 
ArmInsStrb 
ArmInsStrd 
ArmInsStrex 
ArmInsStrexb 
ArmInsStrexd 
ArmInsStrexh 
ArmInsStrh 
ArmInsStrht 
ArmInsStrt 
ArmInsStr 
ArmInsSub 
ArmInsSvc 
ArmInsSwp 
ArmInsSwpb 
ArmInsSxtab 
ArmInsSxtab16 
ArmInsSxtah 
ArmInsSxtb 
ArmInsSxtb16 
ArmInsSxth 
ArmInsTeq 
ArmInsTrap 
ArmInsTst 
ArmInsUadd16 
ArmInsUadd8 
ArmInsUasx 
ArmInsUbfx 
ArmInsUdf 
ArmInsUdiv 
ArmInsUhadd16 
ArmInsUhadd8 
ArmInsUhasx 
ArmInsUhsax 
ArmInsUhsub16 
ArmInsUhsub8 
ArmInsUmaal 
ArmInsUmlal 
ArmInsUmull 
ArmInsUqadd16 
ArmInsUqadd8 
ArmInsUqasx 
ArmInsUqsax 
ArmInsUqsub16 
ArmInsUqsub8 
ArmInsUsad8 
ArmInsUsada8 
ArmInsUsat 
ArmInsUsat16 
ArmInsUsax 
ArmInsUsub16 
ArmInsUsub8 
ArmInsUxtab 
ArmInsUxtab16 
ArmInsUxtah 
ArmInsUxtb 
ArmInsUxtb16 
ArmInsUxth 
ArmInsVabal 
ArmInsVaba 
ArmInsVabdl 
ArmInsVabd 
ArmInsVabs 
ArmInsVacge 
ArmInsVacgt 
ArmInsVadd 
ArmInsVaddhn 
ArmInsVaddl 
ArmInsVaddw 
ArmInsVand 
ArmInsVbic 
ArmInsVbif 
ArmInsVbit 
ArmInsVbsl 
ArmInsVceq 
ArmInsVcge 
ArmInsVcgt 
ArmInsVcle 
ArmInsVcls 
ArmInsVclt 
ArmInsVclz 
ArmInsVcmp 
ArmInsVcmpe 
ArmInsVcnt 
ArmInsVcvta 
ArmInsVcvtb 
ArmInsVcvt 
ArmInsVcvtm 
ArmInsVcvtn 
ArmInsVcvtp 
ArmInsVcvtt 
ArmInsVdiv 
ArmInsVdup 
ArmInsVeor 
ArmInsVext 
ArmInsVfma 
ArmInsVfms 
ArmInsVfnma 
ArmInsVfnms 
ArmInsVhadd 
ArmInsVhsub 
ArmInsVld1 
ArmInsVld2 
ArmInsVld3 
ArmInsVld4 
ArmInsVldmdb 
ArmInsVldmia 
ArmInsVldr 
ArmInsVmaxnm 
ArmInsVmax 
ArmInsVminnm 
ArmInsVmin 
ArmInsVmla 
ArmInsVmlal 
ArmInsVmls 
ArmInsVmlsl 
ArmInsVmovl 
ArmInsVmovn 
ArmInsVmsr 
ArmInsVmul 
ArmInsVmull 
ArmInsVmvn 
ArmInsVneg 
ArmInsVnmla 
ArmInsVnmls 
ArmInsVnmul 
ArmInsVorn 
ArmInsVorr 
ArmInsVpadal 
ArmInsVpaddl 
ArmInsVpadd 
ArmInsVpmax 
ArmInsVpmin 
ArmInsVqabs 
ArmInsVqadd 
ArmInsVqdmlal 
ArmInsVqdmlsl 
ArmInsVqdmulh 
ArmInsVqdmull 
ArmInsVqmovun 
ArmInsVqmovn 
ArmInsVqneg 
ArmInsVqrdmulh 
ArmInsVqrshl 
ArmInsVqrshrn 
ArmInsVqrshrun 
ArmInsVqshl 
ArmInsVqshlu 
ArmInsVqshrn 
ArmInsVqshrun 
ArmInsVqsub 
ArmInsVraddhn 
ArmInsVrecpe 
ArmInsVrecps 
ArmInsVrev16 
ArmInsVrev32 
ArmInsVrev64 
ArmInsVrhadd 
ArmInsVrinta 
ArmInsVrintm 
ArmInsVrintn 
ArmInsVrintp 
ArmInsVrintr 
ArmInsVrintx 
ArmInsVrintz 
ArmInsVrshl 
ArmInsVrshrn 
ArmInsVrshr 
ArmInsVrsqrte 
ArmInsVrsqrts 
ArmInsVrsra 
ArmInsVrsubhn 
ArmInsVseleq 
ArmInsVselge 
ArmInsVselgt 
ArmInsVselvs 
ArmInsVshll 
ArmInsVshl 
ArmInsVshrn 
ArmInsVshr 
ArmInsVsli 
ArmInsVsqrt 
ArmInsVsra 
ArmInsVsri 
ArmInsVst1 
ArmInsVst2 
ArmInsVst3 
ArmInsVst4 
ArmInsVstmdb 
ArmInsVstmia 
ArmInsVstr 
ArmInsVsub 
ArmInsVsubhn 
ArmInsVsubl 
ArmInsVsubw 
ArmInsVswp 
ArmInsVtbl 
ArmInsVtbx 
ArmInsVcvtr 
ArmInsVtrn 
ArmInsVtst 
ArmInsVuzp 
ArmInsVzip 
ArmInsAddw 
ArmInsAsr 
ArmInsDcps1 
ArmInsDcps2 
ArmInsDcps3 
ArmInsIt 
ArmInsLsl 
ArmInsLsr 
ArmInsAsrs 
ArmInsLsrs 
ArmInsOrn 
ArmInsRor 
ArmInsRrx 
ArmInsSubs 
ArmInsSubw 
ArmInsTbb 
ArmInsTbh 
ArmInsCbnz 
ArmInsCbz 
ArmInsMovs 
ArmInsPop 
ArmInsPush 
ArmInsNop 
ArmInsYield 
ArmInsWfe 
ArmInsWfi 
ArmInsSev 
ArmInsSevl 
ArmInsVpush 
ArmInsVpop 
ArmInsEnding