Ric*_*rez 2 java android jvm dalvik smali
Dalvik的运作Thread.sleep(100);如下:
Thread.sleep(100);
invoke-static {v2, v3}, Ljava/lang/Thread;.sleep:(J)V
它是一个静态方法,只取一个参数,但给出两个参数:v2和v3.这不奇怪吗?有没有人对这种情况有所了解?
cyo*_*yon 5
不,它只需要一个长的参数.然而,长期使用两个寄存器传递 v2和v3.这是因为a long是64位值,因此它需要由Dalvik上的两个寄存器表示,它们将寄存器视为32位宽.Dalvik VM技术指南在字节码格式指南中提到:
v2
v3
long
当用于位值(例如整数和浮点数)时,寄存器被认为是32位宽.相邻的寄存器对用于64位值.寄存器对没有对齐要求.
您可以告诉静态方法long从方法签名中获取参数.这(J)V意味着它是一个接受longparameter(J)并返回void(V)的方法.
(J)V
J
V
要阅读有关方法描述符的更多信息,请查看JVM规范,特别是第4.3.3 节和第4.3.2节
归档时间:
12 年,12 月 前
查看次数:
473 次
最近记录: