2014-01-06 2 views
-1

Рассмотрим выполнение оператора JavaМинимальное количество доступов к памяти

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

Что бы минимальное количество обращений к памяти необходимо с помощью:

  1. процессором архитектуры на базе аккумулятора,
  2. процессор с по меньшей мере четырьмя регистрами общего назначения,
  3. процессор с архитектурой на основе стека.
+10

Я представляю себе какой-то Java-гангстер с пистолетом у вас в голове? Вы должны отправить его в 'policoverflow' вместо:/ – Maroun

+0

Что вы пытались? – PakkuDon

+0

Чувак! Сделайте свою домашнюю работу. – Thom

ответ

1

Код Java, байтовый код после компиляции, мы не будем записывать в процессор, который он выполняет на JVM. Тогда ответственность JIT-компилятора заключается в том, чтобы выполнить это и интерпретировать ваше утверждение. E = (a-b) + (c-d) в JIT скрывается для 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).

+0

И один магазин составляет 5. –

Смежные вопросы