1

私は、JVMバックエンドを備えたFreePascalを使用してDelphiコードの一部をコンパイルしています。

Free PascalをJVMバックエンドに移植することに関与している誰かがこれを読んでいるという偶然の機会に、私が受け取っているコンパイルエラーメッセージは次のとおりです。

MyFile.j:379326: JAS Error: reference from line 10039 exceed size for short.

ファイルはかなり大きく(> 6000行)、その中の関数もそうです。そのため、リソースが使い果たされている可能性があります。これを取り除くために単純化するために正確に何をすべきかについて私にヒントを与えることができますか?

4

1 に答える 1

0

Jasminアセンブラへのエラーメッセージを追跡しました:http ://www.java2s.com/Open-Source/Java/Byte-Code/Jasmin-2.4/jas/InsnOperand.java.htm

goto32KB以上離れたラベルを指すコマンドがバイトコードアセンブリファイルにある場合、エラーが発生するように見えます。したがって、ブロックサイズが原因のようです。FPCのアセンブリジェネレータは、単一のif/ループ本体のバイトコードが64Kブロックに収まると想定しています。生成されたアセンブリでgoto_wコマンドが見つかりませんでした-FPCがそれらを発行しないと思います。

この問題はJasminで修正されました。必要に応じて、gotoがgoto_wに置き換えられます。ftp://ftp.freepascal.org/pub/fpc/contrib/jvm/fpcjvmutilities.zipでコピーを入手してください

于 2012-09-05T20:55:09.710 に答える