我可以像这样打印茉莉花的整数:
getstatic java/lang/System/out Ljava/io/PrintStream;
bipush 7
invokevirtual java/io/PrintStream/println(I)V
打印长整型(64 位整数(println
的参数是什么?
我试过了 invokevirtual java/io/PrintStream/println(L)V
但汇编人员告诉我(L)V
是非法签名。(注意:当我尝试调用此方法时,System.out
和 long 都在堆栈上。
我以前也遇到过这个问题。 L
保留用于文字对象名称,不能用于打印长整型。但是,J
可用于打印长(64 位(值。
因此,您的代码将只是:
getstatic java/lang/System/out Ljava/io/PrintStream;
ldc2_w 7
invokevirtual java/io/PrintStream/println(J)V
l2i
打印小的长(64 位(值,但这可能会导致丢失符号位和其他信息。你应该使用
invokevirtual java/io/PrintStream/println(J)V