パスカルと 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