2014-10-10 4 views
2

я могу напечатать целое число в жасмин, как так:Как напечатать длинный в жасмине?

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 и длинный находятся на стеке, когда я пытаюсь вызвать этот метод.)

ответ

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