1 {-# LANGUAGE OverloadedStrings #-}
3 import qualified Data.ByteString.Lazy as B
10 import JVM.Generator.Instructions
12 import qualified Java.Lang
13 import qualified Java.IO
15 hello :: NameType Method
16 hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid
20 newMethod [ACC_PUBLIC] "<init>" [] ReturnsVoid $ do
22 invokeSpecial Java.Lang.object Java.Lang.objectInit
25 hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do
26 getStaticField Java.Lang.system Java.IO.out
27 loadString "Здравствуй, мир!"
28 invokeVirtual Java.IO.printStream Java.IO.println
29 getStaticField Java.Lang.system Java.IO.out
30 loadString "Argument: %d\n"
32 allocArray Java.Lang.object
36 invokeStatic Java.Lang.integer Java.Lang.valueOfInteger
38 invokeVirtual Java.IO.printStream Java.IO.printf
42 newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do
44 invokeStatic "Test" hello
49 testClass = generate "Test" test
52 B.writeFile "Test.class" (encodeClass testClass)