module Bindings.Bfd.Disasm.I386.Insn.Mnemonic where

import Data.List


newtype Mnemonic = Mnemonic String
        deriving (Show)

un
   :: Mnemonic
   -> String
un (Mnemonic s) = s


isCall
   :: Mnemonic
   -> Bool
isCall m = isPrefixOf "call" $ un m

isJump
   :: Mnemonic
   -> Bool
isJump m = isPrefixOf "jmp" $ un m

isBranch
   :: Mnemonic
   -> Bool
isBranch m = ((isPrefixOf "j" $ un m) && (not $ isPrefixOf "jmp" $ un m)) || (isPrefixOf "loop" $ un m)

isReturn
   :: Mnemonic
   -> Bool
isReturn m = isPrefixOf "ret" $ un m