如何打印长茉莉?

时间:2014-10-10 22:57:11

标签: java jvm jasmin

我可以像这样在jasmin中打印一个整数:

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

println的参数是什么才能打印长(64位整数)?

我试过了 invokevirtual java/io/PrintStream/println(L)V但汇编程序告诉我(L)V是非法签名。 (注意:当我尝试调用此方法时,System.out和long都在堆栈中。)

2 个答案:

答案 0 :(得分:2)

我以前也遇到过这个问题。 L保留用于文字对象名称,不能用于打印长整数。但是,J可用于打印长(64位)值。

所以,你的代码就是:

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

答案 1 :(得分:2)

您可以使用l2i打印小的长(64位)值,但这可能会导致丢失符号位和其他信息。你应该使用

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