module Hdis86.Pure
(
disassemble
, disassembleMetadata
, Metadata(..)
) where
import Hdis86.Types
import Hdis86.IO ( UD )
import qualified Hdis86.IO as I
import System.IO.Unsafe ( unsafePerformIO )
import qualified Data.ByteString as BS
disWith :: (UD -> IO a) -> Config -> BS.ByteString -> [a]
disWith f cfg bs = unsafePerformIO $ do
ud <- I.newUD
I.setInputBuffer ud bs
I.setConfig ud cfg
I.unsafeRunLazy ud (f ud)
disassemble :: Config -> BS.ByteString -> [Instruction]
disassemble = disWith I.getInstruction
disassembleMetadata :: Config -> BS.ByteString -> [Metadata]
disassembleMetadata = disWith I.getMetadata