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.putStrLn (methodName m)
27 case attrByName m "Code" of
28 Nothing -> putStrLn "(no code)\n"
29 Just bytecode -> let code = decodeS (0 :: Integer) bytecode
30 in forM_ (codeInstructions code) $ \i -> do
34 _ -> error "Synopsis: disassemble File.class"