Таненбаум Э.- Архитектура компьютера. стр.260

к = 5;

Каким будет новый ассемблерный код при условии, что компилятор является оптимизирующим?

5. Напишите два разных варианта трансляции для IJVM следующего оператора на языке Java:

i = k + л + 5:

6. Напишите на языке Java оператор, ставший источником следующего кода для IJVM:

IL0AD j IL0AD к ISUB

BIPUSH б ISUB DUP IADD ISTORE i

7. В этой главе мы упомянули, что при трансляции показанного ниже оператора в двоичную форму метка L2 должна находиться среди младших 256 слов управляющей памяти:

if (Z) goto LI; else goto L2

А может ли метка LI находиться, скажем, в ячейке с адресом 0x40, a L2 — в ячейке с адресом 0x140? Объясните, почему.

8. В микрокоманде if_cmpeq3 микропрограммы для Mic-1 значение регистра MDR копируется в регистр Н, а в следующей строке от него отнимается значение регистра TOS. Казалось бы, это удобнее записать в одном операторе:

i f_cmpeq3 Z=MDR-T0S; rd Почему этого не делают?

9. Сколько времени потребуется машине Mic-1, которая работает на частоте 2,5 ГГц, на выполнение следующего Java-оператора:

1 - j + к;

Ответ дайте в наносекундах.

10. Аналогичный вопрос только уже для машины Mic-2, тоже работающей на частоте 2,5 ГГц. Опираясь на полученный результат, ответьте, сколько времени займет выполнение программы на машине Mic-2, если эта программа выполняется на машине Mic-1 за 100 не?

И. Напишите микропрограмму для Mic-1, чтобы реализовать JVM-команду P0PTW0. Эта команда удаляет два верхних слова из стека.

12. На машине JVM существуют специальные однобайтные коды операций для загрузки в стек локальных переменных от 0 до 3, которые используются вместо обычной команды IL0AD. Какие изменения нужно внести в машину IJVM, чтобы наилучшим образом использовать эти команды?

13. Команда ISHR (целочисленный арифметический сдвиг вправо) поддерживается в JVM, но не поддерживается в IJVM. Команда извлекает два верхних слова из стека и заменяет их одним словом (результатом). Второе сверху слово стека — это сдвигаемый операнд. Он сдвигается вправо на значение от 0 до 31 включительно, в зависимости от значения пяти самых младших битов верхнего слова в стеке (остальные 27 бит игнорируются). Знаковый бит дублируется вправо на столько же битов, на сколько осуществляется сдвиг. Код операции для команды ISHR равен 122 (0x7А).

14. Команда ISHL (целочисленный сдвиг влево) поддерживается в JVM, но не поддерживается в IJVM. Команда извлекает два верхних слова из стека и заменяет их одним значением (результатом). Второе сверху слово в стеке — сдвигаемый операнд. Он сдвигается влево на значение от 0 до 31 включительно, в зависимости от значения пяти младших битов верхнего слова в стеке (остальные 2 бит верхнего слова игнорируются). Нули сдвигаются влево на столько же битов, на сколько осуществляется сдвиг. Код операции ISHL равен 120 (0x78).

15. JVM-команде INVOKE VIRTUAL нужно знать, сколько у нее параметров. Зачем?

16. Реализуйте JVM-команду DL0AD для Mic-2. Эта команда содержит однобайтный индекс и помещает локальную переменную, находящуюся в этом месте, в стек. Затем она помещает следующее старшее слово в стек.


⇐ Предыдущая страница| |Следующая страница ⇒