Archive for 1月 16th, 2013

  1. Hello, Win32 API(Jasmin) World!

    Posted on 1月 16th, 2013 by cx20

    Win32 API(Jasmin)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Jasmin にて SWT の非公開 API を使用した Win32 API 呼出しの例となっている。

    ソースコード

    ; Produced by NeoJasminVisitor (tinapoc)
    ; http://tinapoc.sourceforge.net
    ; The original JasminVisitor is part of the BCEL
    ; http://jakarta.apache.org/bcel/
    ; Sat Dec 08 23:04:58 JST 2012
     
    .bytecode 51.0
    .source Hello.java
    .class public Hello
    .super java/lang/Object
     
     
    .method public ()V
        .limit stack 1
        .limit locals 1
        .var 0 is this LHello; from Label0 to Label1
     
        Label0:
    .line 4
           0: aload_0
           1: invokespecial java/lang/Object/()V
     
        Label1:
           4: return
     
    .end method
     
     
    .method public static main([Ljava/lang/String;)V
        .limit stack 5
        .limit locals 3
        .var 0 is arg0 [Ljava/lang/String; from Label0 to Label1
     
     
        Label0:
    .line 6
           0: new org/eclipse/swt/internal/win32/TCHAR
           3: dup
           4: iconst_0
           5: ldc "Hello, Win32 API World!"
           7: iconst_1
           8: invokespecial org/eclipse/swt/internal/win32/TCHAR/(ILjava/lang/String;Z)V
          11: astore_1
     
        .line 7
          12: new org/eclipse/swt/internal/win32/TCHAR
          15: dup
          16: iconst_0
          17: ldc "Hello, World"
          19: iconst_1
          20: invokespecial org/eclipse/swt/internal/win32/TCHAR/(ILjava/lang/String;Z)V
          23: astore_2
     
        .line 8
          24: iconst_0
          25: aload_1
          26: aload_2
          27: iconst_0
          28: invokestatic org/eclipse/swt/internal/win32/OS/MessageBox(ILorg/eclipse/swt/internal/win32/TCHAR;Lorg/eclipse/swt/internal/win32/TCHAR;I)I
          31: pop
     
        Label1:
    .line 9
          32: return
     
    .end method

    コンパイル&実行方法

    C:¥> jasmin Hello.j
    C:¥> java -cp org.eclipse.swt.win32.win32.x86_3.6.1.v3655c.jar;. Hello

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API World!
    ---------------------------
    OK   
    ---------------------------