2

次のようにジャスミンで整数を出力できます。

getstatic java/lang/System/out Ljava/io/PrintStream;
bipush 7
invokevirtual java/io/PrintStream/println(I)V

printlnlong (64 ビット整数) を出力するための引数は何ですか?

試してみ invokevirtual java/io/PrintStream/println(L)Vましたが、アセンブラから、これ(L)Vは不正な署名であると表示されます。(注:System.outこのメソッドを呼び出そうとすると、 long と long の両方がスタックにあります。)

4

2 に答える 2

2

私も以前これで悩んでいました。Lはリテラル オブジェクト名用に予約されており、long の出力には使用できません。ただし、J長い (64 ビット) 値を出力するために使用できます。

したがって、コードは次のようになります。

getstatic java/lang/System/out Ljava/io/PrintStream; ldc2_w 7 invokevirtual java/io/PrintStream/println(J)V

于 2014-10-13T02:41:29.763 に答える
2

小さい long (64 ビット) 値を出力するために使用できますl2iが、これにより符号ビットと追加情報が失われる可能性があります。使用する必要があります

invokevirtual java/io/PrintStream/println(J)V

于 2014-10-13T02:45:19.917 に答える