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