1 {-# LANGUAGE OverloadedStrings #-}
4 import System.Environment
5 import qualified Data.ByteString.Lazy as B
8 import Data.BinaryState
17 cls <- decompileFile clspath
20 putStrLn "Constants pool:"
21 forM_ (assocs $ constantPool cls) $ \(i, c) ->
22 putStrLn $ printf " #%d:\t%s" i (show c)
24 forM_ (methods cls) $ \m -> do
26 B.putStr (methodName m)
27 print (methodSignature m)
28 case attrByName m "Code" of
29 Nothing -> putStrLn "(no code)\n"
30 Just bytecode -> let code = decodeS (0 :: Integer) bytecode
31 in forM_ (codeInstructions code) $ \i -> do
35 _ -> error "Synopsis: disassemble File.class"