如何使用javap查看哪些字节码行对应于Java代码中的行?
我的任务是制作一种计算给定向量大小的方法,然后使用javap -c
将其分解
现在,我必须说明在java中,震级框架中的每个局部变量对应于什么,以及字节码的哪些行对应于什么
以下是我的方法:
public class Vector {
/** Magnitude of vector
* Calculates the magnitude of the vector corresponding
* to the array a.
*
* @return magnitude
*/
public double magnitude(double[] a){
int n = a.length;
double sum = 1;
for (int i=0; i<n; i++){
sum = sum*a[i];
}
double magnitude = Math.sqrt(sum);
return magnitude;
}
}
下面是使用javap -c
的结果:
public class Vector {
public Vector();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public double magnitude(double[]);
Code:
0: aload_1
1: arraylength
2: istore_2
3: dconst_1
4: dstore_3
5: iconst_0
6: istore 5
8: iload 5
10: iload_2
11: if_icmpge 27
14: dload_3
15: aload_1
16: iload 5
18: daload
19: dmul
20: dstore_3
21: iinc 5, 1
24: goto 8
27: dload_3
28: invokestatic #2 // Method java/lang/Math.sqrt:(D)D
31: dstore 5
33: dload 5
35: dreturn
}
# 1 楼答案
使用
-l
标志运行javap
:例如,您可以看到说明3&;4对应于第14行,其中
1
被加载到索引2处的double
中