4) ABCDExF/+G-H/x+.
13. Напишите три формулы в обратной польской записи, которые нельзя переделать в инфиксную запись.
14. Переделайте следующие инфиксные логические формулы в обратную польскую запись:
1) (А И В) ИЛИ С]
2) (А ИЛИ В) И (А ИЛИ С);
3) (А И В) ИЛИ (С И D).
15. Переделайте следующую инфиксную формулу в обратную польскую запись и напишите IJVM-код, чтобы ее выполнить:
(5x2 + 7)- (4/2 + 1)
16. Пусть имеется команда ассемблера: MOV REG.ADDR
Это — команда Pentium 4 для загрузки регистра из памяти, а в UltraSPARC III для загрузки регистра из памяти нужно написать:
LOAD ADDR.REG
Почему порядок записи операндов разный?
17. Сколько регистров в машине, форматы команд которой представлены на рис. 5.17?
18. В форматах команд на рис. 5.17 бит 23 позволяет различать варианты 1 и 2 формата. Однако для определения варианта 3 формата никакого специального бита не предусмотрено. Как аппаратное обеспечение узнает, что нужен вариант 3?
19. Обычно программа определяет местонахождение переменной X в пределах интервала от А до В. Если бы имелась трехадресная команда с операндами А, В и X, сколько битов кода условия было бы установлено этой командой?
20. Pentium 4 содержит бит кода условий, состояние которого зависит от переноса бита 3 после выполнения арифметической операции. Зачем это нужно?
21. В UltraSPARC III нет такой команды, которая загружает в регистр 32-разрядное число. Вместо нее обычно используется последовательность из двух команд: SETHI и ADD. Существуют ли еще какие-нибудь способы загрузки 32-разрядного числа в регистр? Аргументируйте.
22. Один из ваших друзей стучится к вам в комнату в 3 часа ночи и радостно сообщает, что у него появилась замечательная идея — создать команду с двумя кодами операций. Что вы сделаете в этой ситуации: отправите своего друга получать патент или пошлете его (думать дальше)?
23. В процессоре 8051 не предусмотрены команды смещения более чем на 8 бит. Значит ли это, что адресация памяти в диапазоне выше 255 невозможна? Если возможна, объясните, как она осуществляется.
24. В программировании очень распространены следующие формы проверки:
if (k==0) ... if (a>b) ... if (k<5) ...
Предложите команду, которая будет эффективно проверять эти условия. Какие поля будут в вашей команде?
25. Покажите, каким будет 16-разрядное двоичное число 1001 0101 1100 ООН после:
1) сдвига вправо на 4 бита с заполнением нулями;
2) сдвига вправо на 4 бита с расширением по знаку;
3) сдвига влево на 4 бита;
4) циклического сдвига влево на 4 бита;
5) циклического сдвига вправо на 4 бита.
26. Как в машине, в которой нет команды CLR, очистить слово памяти?
27. Вычислите логическое выражение (А И В) ИЛИ С для:
♦ А = 1101 0000 1010 1101; + £ = 1111 1111 0000 1111;
♦ С = 0000 0000 0010 0000.
28. Придумайте, как поменять местами две переменные, А и В, не использовав при этом третьей переменной или регистра. Подсказка: подумайте о команде ИСКЛЮЧАЮЩЕЕ ИЛИ.