最小内存访问次数

时间:2014-01-06 12:07:14

标签: java memory architecture stack execution-time

考虑执行java语句

e=(a-b)+(c-d)

使用以下内容所需的最小内存访问次数是什么:

  1. 处理器基于累加器的架构,
  2. 具有至少4个通用寄存器的处理器,
  3. 具有基于堆栈架构的处理器。

1 个答案:

答案 0 :(得分:1)

Java代码,编译后的字节代码,我们编写的代码不会在它在JVM上执行的处理器中执行。然后,JIT编译器负责执行该操作,并且JIT中的语句e =(a-b)+(c-d)的解释对于Java程序员是隐藏的。

JVM使用堆栈架构,您可以使用javap命令查看字节码执行。

    private static void test(int a, int b, int c, int d) {
    int e = (a - b) +  (c - d);
}

上述方法的字节代码是

  private static void test(int, int, int, int);
  flags: ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=4
         0: iload_0
         1: iload_1
         2: isub
         3: iload_2
         4: iload_3
         5: isub
         6: iadd
         7: istore        4
         9: return
      LineNumberTable:
        line 36: 0
        line 37: 9
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      10     0     a   I
               0      10     1     b   I
               0      10     2     c   I
               0      10     3     d   I
               9       1     4     e   I

根据本例中的字节代码,堆栈已被访问4次(i_load)。