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