JavaバイトコードアセンブラのJasminをWindowsで動かすというのを前に試してみた。
Jasmin自体がJavaで作られており、普通にJava環境でJasminを起動して動かすことができるので、普通なら何もしなくても構わない。
そこをあえて、Java環境が無くてもJasminが動かせるようにWindowsのネイティブのバイナリ(.exe)を作って動かしてみた。
JavaのソースコードをコンパイルしてWindowsのバイナリを得るには、GNU Compiler for Java (GCJ)を使うと可能だ。
Windows用のMinGWベースのものを使った。
→ thisiscool.com MinGW GCC/GCJ
手順としては、まずGCJをc:\に置いてpathを通し、
set PATH=c:\thisiscool-gcc\gcc-ecj\bin
次のようにすればコンパイルされて、exeファイルを得ることができる。
gcj jasmin.jar --main=jasmin.Main -o jasmin
Jasmin.exeができたので、例題としてhello worldなバイトコードのソースをアセンブルしてみた。
.class public Hello .super java/lang/Object .method public ()V aload_0 invokespecial java/lang/Object/()V return .end method .method public static main([Ljava/lang/String;)V .limit stack 2 getstatic java/lang/System/out Ljava/io/PrintStream; ldc "Hello Jasmin!!" invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V return .end method
このソースをhello.jという名前でファイル作成し、
jasmin.exe hello.j
として、アセンブルすることができ、バイトコードのHello.classが得られる。
Java環境があれば、
java Hello
とすれば、実行できるのが確認できる。
—
追記
前にJavaバイトコードを生成するコンパイラを作ってみたときにJasminを弄ったのだった。
Javaバイトコードを生成するTiny BASICコンパイラを作ってみた