我可以用jasmin打印一个整数,如下所示:
getstatic java/lang/System/out Ljava/io/PrintStream;
bipush 7
invokevirtual java/io/PrintStream/println(I)Vprintln的参数是什么来打印一个长的(64位整数)?
我尝试过invokevirtual java/io/PrintStream/println(L)V,但是汇编程序告诉我(L)V是非法签名。(注意:当我试图调用此方法时,System.out和long都在堆栈中。)
发布于 2014-10-13 02:41:29
我以前也有这方面的麻烦。L是为文字对象名保留的,不能用于打印longs。但是,J可以用于打印长(64位)值。
所以,您的代码应该是:
getstatic java/lang/System/out Ljava/io/PrintStream; ldc2_w 7 invokevirtual java/io/PrintStream/println(J)V
发布于 2014-10-13 02:45:19
您可以使用l2i打印较小的长(64位)值,但这可能会导致丢失符号位和其他信息。你应该用
invokevirtual java/io/PrintStream/println(J)V
https://stackoverflow.com/questions/26309203
复制相似问题