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

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

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

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

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

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

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

В следующую группу бинарных операций входят булевы команды. Хотя
существует 16 булевых функций от двух переменных, команды для всех 16
поддерживаются в очень немногих машинах. Обычно поддерживаются только
операции И, ИЛИ и НЕ; иногда кроме них еще ИСКЛЮЧАЮЩЕЕ ИЛИ, НЕ-ИЛИ и НЕ-
И.
Важным применением операции И является выделение битов из слов.
Рассмотрим машину со словами длиной в 32 бита, в которой на одно слово
приходится четыре 8-разрядных символа. Предположим, что нужно отделить
второй символ от остальных трех, чтобы его напечатать. Это значит, что
нужно создать слово, в котором этот символ займет правые 8 бит, а левые
24 бит должны стать нулевыми (так называемое выравнивание вправо).
Чтобы извлечь нужный нам символ, слово, содержащее этот символ,
соединяется операцией И с константой, которая называется маской. В
результате этой операции все ненужные биты меняются на нули:
А:
10110111 10111100 11011011 10001011
В (маска):
00000000 11111111 00000000 00000000 АН В:
00000000 10111100 00000000 00000000
Затем результат сдвигается на 16 бит вправо, чтобы нужный символ оказался
в правой части слова.
Важным применением команды ИЛИ является помещение битов в слово. Эта
операция обратна операции извлечения. Чтобы изменить правые 8 бит 32-раз-
Типы команд 421
рядного слова, не повредив при этом остальные 24 бита, сначала
нежелательные 8 бит надо заменить нулями, а затем новый символ соединить
операцией ИЛИ с полученным результатом:
А:
10110111 10111100 11011011 10001011 В (маска):
11111111 11111111 11111111 00000000 А И В:
10110111 10111100 11011011 00000000
С:
00000000 00000000 00000000 01010111 (А И В) ИЛИ С:
10110111 10111100 11011011 01010111
Операция И удаляет единицы, поэтому в полученном результате никогда не
бывает больше единиц, чем в любом из двух операндов. Операция ИЛИ
вставляет единицы, поэтому в полученном результате всегда по крайней мере
столько же единиц, сколько в операнде с большим количеством единиц.
Операция ИСКЛЮЧАЮЩЕЕ ИЛИ, в отличие от них, симметрична в отношении
единиц и нулей. Такая симметрия иногда может быть полезной, например при
порождении случайных чисел.
Большинство компьютеров сегодня поддерживают команды с плавающей точкой,
которые в основном соответствуют арифметическим операциям с целыми
числами. Большая часть машин поддерживает по крайней мере 2 варианта
таких чисел: более короткие для скорости и более длинные на тот случай,
если требуется высокая точность вычислений. Существует множество
возможных форматов для чисел с плавающей точкой, но сейчас практически
везде применяется единый стандарт IEEE 754. Числа с плавающей точкой и
этот стандарт обсуждаются в приложении Б.
Унарные операции
В унарных операциях результат получается обработкой единственного
операнда. Поскольку в данном случае нужно задавать на один адрес меньше,
чем в бинарных операциях, команды иногда бывают короче, если только не
требуется задавать другую информацию.
Очень полезны команды сдвига и циклического сдвига. Они часто даются в
нескольких вариантах. Сдвиги - это операции, при которых биты сдвигаются
влево или вправо, при этом биты, которые сдвигаются за пределы слова,
утрачиваются. Циклические сдвиги - это сдвиги, при которых биты,
вытесненные с одного конца, появляются на другом конце слова. Разницу
между обычным сдвигом и циклическим сдвигом иллюстрирует следующий
пример:
А:
00000000 00000000 00000000 01110011 Сдвиг А вправо на 2 бита:
00000000 00000000 00000000 00011100 Циклический сдвиг А вправо на 2 бита:
11000000 00000000 00000000 00011100
422
Глава 5. Уровень архитектуры набора команд
Обычные и циклические сдвиги влево и вправо играют очень важную роль.
Если я-разрядное слово циклически сдвигается влево на k бит, результат
будет такой же, как при циклическом сдвиге вправо на п - k бит.
Сдвиги вправо часто выполняются с расширением по знаку. Это значит, что
позиции, освободившиеся на левом конце слова, заполняются знаковым битом
(О или 1) исходного слова, как будто знаковый бит перетаскивают вправо.
Кроме того, это значит, что отрицательное число остается отрицательным.
Вот как выглядят сдвиги на 2 бита вправо:
Л\
1111111 11111111 11111111 11110000
А сдвигается без знакового расширения:
0011111 11111111 11111111 11111100
А сдвигается со знаковым расширением:
1111111 11111111 11111111 11111100
Операция сдвига используется при умножении и делении на 2. Если
положительное целое число сдвигается влево на k бит, результатом будет
исходное число, умноженное на 2к. Если положительное целое число
сдвигается вправо на k бит, результатом становится исходное число,
деленное на 2к.
Сдвиги могут использоваться для повышения скорости выполнения некоторых
арифметических операций. Рассмотрим выражение 18 х я, где я -
положительное целое число: 18 х я = 16хя + 2хя. Значение 16 х я можно
получить путем сдвига копии я на 4 бита влево. Значение 2 х я можно
получить, сдвинув я на 1 бит влево. Сумма этих двух чисел равна 18 х я.
Предыдущая << 1 .. 205 206 207 208 209 210 < 211 > 212 213 214 215 216 217 .. 422 >> Следующая