Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

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

Таненбаун Э. Архитектура компьютера — Спб.: Питер, 2007. — 844 c.
ISBN 5-469-01274-3
Скачать (прямая ссылка): arhkomputera2007.DjVu
Предыдущая << 1 .. 199 200 201 202 203 204 < 205 > 206 207 208 209 210 211 .. 422 >> Следующая

меткой LOOP вызывает элемент Д в регистр R4. При вычислении источника
здесь используется индексная адресация. Регистр (R2) и константа (адрес
элемента А) складываются, полученный результат служит для обращения к
памяти. Сумма этих двух величин поступает в память, но не сохраняется ни
в одном из доступных пользователю регистров. Следующая запись означает,
что для определения приемника используется регистровая адресация, а для
определения источника - индексная:
MOV R4.ACR2)
Здесь R4 - это регистр, А - смещение, R2 - регистр. Если А имеет
значение, скажем, 124 300, то соответствующая машинная команда будет
выглядеть так, как показано на рис. 5.14.
MOV R4 R2 124300
Рис. 5.14. Возможное представление команды MOV R4, A(R2) в памяти
Во время первого прохождения цикла регистр R2 принимает значение 0 (так
регистр инициализируется), поэтому нужное нам слово А0 находится в ячейке
с адресом 124 300. Это слово загружается в регистр R4. При следующем
прохождении цикла R2 принимает значение 4, поэтому нужное нам слово А{
находится в ячейке с адресом 124 304 и т. д.
Как мы отмечали, здесь смещение - это указатель ячейки памяти, а значение
регистра - это небольшое целое число, которое во время вычисления
меняется. Такая форма требует, чтобы поле смещения в команде было
достаточно большим для хранения адреса, поэтому такой способ не очень
эффективен, однако он часто оказывается самым лучшим.
Относительная индексная адресация
В некоторых машинах применяется режим адресации, при котором адрес
вычисляется путем суммирования значений двух регистров и смещения
(смещение факультативно). Такой режим называется относительной индексной
адресацией. Один из регистров - это база, другой - индекс. Относительная
индексная адресация очень удобна при следующей ситуации. Вне цикла мы
могли бы поместить адрес элемента А в регистр R5, а адрес элемента В - в
регистр R6. Тогда можно было бы заменить две первые команды цикла LOOP:
LOOP: MOV R4.(R2+R5)
AND R4,(R2+R6)
Адресация 409
Было бы идеально, если бы существовал режим адресации по сумме двух
регистров без смещения. В то же время даже команда с 8-разрядным
смещением была бы большим достижением, поскольку оба смещения можно
сделать нулевыми. Однако если смещение всегда составляет 32 бита, тогда
мы ничего не выиграем, использовав такой режим адресации. На практике
машины с относительной индексной адресацией обычно имеют форму с 8- или
16-разрядным смещением.
Стековая адресация
Мы уже отмечали, что очень желательно сделать машинные команды как можно
короче. Предельный случай - команды без адресов. Как мы видели в главе 4,
безадресные команды, например IADD, возможны при наличии стека. В этом
подразделе мы рассмотрим стековую адресацию более подробно.
Обратная польская запись
В математике существует древняя традиция помещать оператор между
операндами (х + г/), а не после операндов (х у +). Форма с оператором
между операндами называется инфиксной записью. Форма с оператором после
операндов называется постфиксной, или обратной польской записью в честь
польского логика Я. Лукасевича (1958), который изучал свойства этой
записи.
Обратная польская запись имеет ряд преимуществ перед инфиксной записью
при выражении алгебраических формул. Во-первых, любая формула может быть
выражена без скобок. Во-вторых, она удобна для вычисления формул в
машинах со стеками. В-третьих, инфиксные операторы имеют приоритеты,
которые произвольны и нежелательны. Например, мы знаем, что а b + с
значит (а b) + с, а не а (Ь + с), поскольку произвольно было определено,
что умножение имеет приоритет над сложением. Но имеет ли приоритет сдвиг
влево над логической операцией И? Кто знает? Обратная польская запись
позволяет устранить такие недоразумения.
Существует несколько алгоритмов для превращения инфиксных формул в
обратную польскую запись. Мы рассмотрим переработанный алгоритм, идея
которого предложена Э. Дейкстра (Е. W. Dijkstra). Предположим, что
формула состоит из переменных, двухоперандных операторов +, -, *, /, а
также левой и правой скобок. Чтобы отметить конец формулы, мы будем
вставлять символ после ее последнего символа и перед первым символом
следующей формулы.
На рис. 5.15 схематично показана железная дорога из Нью-Йорка в
Калифорнию с ответвлением, ведущим в Техас. Каждый символ формулы
представлен одним вагоном. Поезд движется на запад (налево). Перед
стрелкой каждый вагон должен останавливаться и узнавать, должен ли он
двигаться прямо в Калифорнию, или ему нужно по пути заехать в Техас.
Вагоны, содержащие переменные, всегда направляются в Калифорнию и никогда
не едут в Техас. Вагоны, содержащие все прочие символы, должны перед
прохождением стрелки узнавать о содержимом ближайшего вагона,
отправившегося в Техас.
В таблице на рис. 5.16 показана зависимость ситуации от того, какой вагон
отправился в Техас последним и какой вагон находится у стрелки. Первый
вагон (помеченный символом _L) всегда отправляется в Техас.
Предыдущая << 1 .. 199 200 201 202 203 204 < 205 > 206 207 208 209 210 211 .. 422 >> Следующая