bindings-bfd-0.2.0: src/Bindings/Bfd/Disasm/I386/Insn/Operand.hs
module Bindings.Bfd.Disasm.I386.Insn.Operand where
import Bindings.Bfd.Disasm.I386.Insn.EffectiveAddr
data Operand = Imm {
immed :: Int
}
| IndD {
section :: String
, effAddr :: EffectiveAddr
, displacement :: Maybe Int
, address :: Maybe Int
}
| IndJ {
effAddr :: EffectiveAddr
, displacement :: Maybe Int
, address :: Maybe Int
}
| DirD {
direct :: String
}
| DirJ {
direct :: String
}
| Abs {
absolute :: Int
}
-- the following constructors are created by canonicalizing the above
| ImmSym {
symbolIndex :: Int
}
| IndDSym {
effAddr :: EffectiveAddr
, symbolIndex :: Int
, addend :: Int
}
| IndJSym {
effAddr :: EffectiveAddr
, symbolIndex :: Int
, addend :: Int
}
| AbsSymT {
symbolIndex :: Int
}
| AbsSymL {
symbol :: String
}
deriving (Eq, Ord, Show)
isAbs
:: Operand
-> Bool
isAbs (Abs _) = True
isAbs _ = False