2014-10-10 38 views
2

我可以茉莉打印一个整数,像这样:如何在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

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

所以,你的代码也只是:

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

2

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

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