1

パスカルと 68k から Java と x86 に変換するコンパイラの構築に関する Jack Crenshaw のガイドに従っています。実際の組み立ては、いくつかの例外を除いて、ほとんど順風満帆でした。しかし、Runtime.getRuntime().exec() を使用して、生成されたアセンブリを Java プログラムにアセンブルおよびリンクすることを試みました。なんらかの理由で、Java から呼び出すとアセンブラーがエラーをスローしますが、自分で呼び出すとコマンド ラインから正常に動作します。関連するJavaコードは次のとおりです。

        String s = "";
        Process p = Runtime.getRuntime().exec("C:\\masm32\\bin\\ml /c /Zd /coff \"" + src.getAbsolutePath() + "\"");
        p.waitFor();
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
        }

        System.out.println("\n");

        p = Runtime.getRuntime().exec("C:\\masm32\\bin\\Link /SUBSYSTEM:CONSOLE \"" + obj.getAbsolutePath() + "\"");
        p.waitFor();
        stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
        }

        System.out.println("\n");

        p = Runtime.getRuntime().exec("\"" + exe.getAbsolutePath() + "\"");
        p.waitFor();
        stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((s = stdInput.readLine()) != null) {
            System.out.println(s);
        }

エラー

Assembling: C:\asm\tobecompiled.asm
C:\asm\tobecompiled.asm(1) : error A2088: END directive required at end of file
4

0 に答える 0