X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=disassemble.hs;h=d4b9a1b5d9cb807c77098b6f03588d13c85b01b4;hb=d0df50b824800127b4a40c566c0807209d669ebc;hp=fc6e77f4da9e04633af4aa2c27c06b0e478a825b;hpb=2d5f44ab034b0f0ee6f13107f516aa2a8659470f;p=hs-java.git diff --git a/disassemble.hs b/disassemble.hs index fc6e77f..d4b9a1b 100644 --- a/disassemble.hs +++ b/disassemble.hs @@ -1,7 +1,9 @@ {-# LANGUAGE OverloadedStrings #-} import Control.Monad +import Data.Array import System.Environment import qualified Data.ByteString.Lazy as B +import Text.Printf import Data.BinaryState import JVM.Types @@ -15,10 +17,14 @@ main = do cls <- decompileFile clspath putStr "Class: " B.putStrLn (this cls) + putStrLn "Constants pool:" + forM_ (assocs $ constantPool cls) $ \(i, c) -> + putStrLn $ printf " #%d:\t%s" i (show c) putStrLn "Methods:" forM_ (methods cls) $ \m -> do putStr ">> Method " - B.putStrLn (methodName m) + B.putStr (methodName m) + print (methodSignature m) case attrByName m "Code" of Nothing -> putStrLn "(no code)\n" Just bytecode -> let code = decodeS (0 :: Integer) bytecode