0

現在の状況と背景

学校の課題では、独自のプログラミング言語を作成する必要があります。現在、私はメソッド呼び出しを行う時点で立ち往生しています。

メソッドを正常に作成できますが、それを呼び出そうとした時点でプログラムが壊れます。

テストコード

テストに使用しているコードは

testMethod();

method testMethod () {
    print("Test");
}

これにより、次のコードが生成されます

  • 逆コンパイルされたクラス
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
// AS YOU CAN SEE IT CAN NOT DECOMPILE MAIN METHOD
//

public class test {
    public static void main(String[] param0) {
        // $FF: Couldn't be decompiled
    }

    public void testMethod() {
        System.out.println("Test");
    }
}

  • Java バイトコード
.class public test
.super java/lang/Object

.method public static main([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

invokevirtual void/testMethod()V
return
.end method
.method public testMethod()V
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc "Test"
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
.limit stack 10
.limit locals 10
return
.end method

私は何を試しましたか

次のJavaバイトコードでメソッドを呼び出そうとしました:

(test は、テストしているクラスの名前です)

  • invokevirtual void/testMethod()V
  • invokevirtual testMethod()V
  • インボーク仮想テスト/testMethod()V
  • invokevirtual test/void/testMethod()V

どんな助けにも感謝します

4

1 に答える 1