ネタ 2015-001

JavaバイトコードアセンブラのJasminをWindowsで動かしてみた。


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_win32.zip (download) ]

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

とすれば、実行できるのが確認できる。