Статус нашего сайта: |
ICQ Information Center |
ICQ SHOP 5-значные 6-значные 7-значные 8-значные 9-значные Rippers List ОПЛАТА СТАТЬИ СЕКРЕТЫ HELP CENTER OWNED LIST РОЗЫСК!New! ICQ РЕЛИЗЫ Протоколы ICQ LOL ;-) Настройка компьютера Аватарки Смайлики СОФТ Mail Checkers Bruteforces ICQTeam Soft 8thWonder Soft Other Progs ICQ Patches Miranda ICQ ФорумАрхив! ВАШ АККАУНТ ICQ LiveJournal
РекламаНаш канал:irc.icqinfo.ru |
Таненбаум Э.- Архитектура компьютера. стр.299Прибавление 1 к слову тоже часто требуется при различных подсчетах. Унарная форма команды ADD — это операция инкремента INC. Другой пример — операция NEG. Отрицание X — это на самом деле бинарная операция вычитания 0 - X, но поскольку операция отрицания применяется очень часто, в архитектуру команд вводится команда NEG. Важно понимать разницу между арифметической операцией NEG и логической операцией NOT. При выполнении операции NEG происходит аддитивная инверсия числа (такое число, сумма которого с исходным числом дает 0). При выполнении операции NOT все биты в слове просто инвертируются. Эти операции очень похожи, а для системы, в которой отрицательные величины представлены в обратном двоичном коде, они идентичны. (В арифметике дополнительных кодов для выполнения команды NEG сначала инвертируются все биты, а затем к полученному результату прибавляется 1.) Унарные и бинарные операции часто объединяются в группы по функциям, которые они выполняют, а вовсе не по числу операндов. В первую группу входят арифметические операции, в том числе операция отрицания. Во вторую группу входят логические операции и операции сдвига, поскольку эти две категории очень часто используются вместе для извлечения данных. Сравнения и условные переходы Практически все программы должны проверять свои данные и на основе полученных результатов изменять последовательность выполняемых команд. Рассмотрим функцию извлечения квадратного корня из числа х. Если это число отрицательно, функция должна сообщать об ошибке, если положительно — выполнять вычисления. То есть соответствующая программа должна проверять знак числа х, а затем совершать переход в зависимости от полученного результата. Этот алгоритм можно реализовать с помощью специальных команд условного перехода, проверяющих разного рода условия и при их выполнении совершающих переходы к определенным адресам памяти. Иногда один из битов в команде указывает, нужно ли осуществлять переход в случае выполнения или в случае не выполнения условия. Часто целевой адрес является не абсолютным, а относительным (связанным с текущей командой). Самое распространенное условие — проверка на равенство или на неравенство определенного бита нулю. Если команда проверяет знаковый бит числа и совершает переход к метке (LABEL), когда этот бит равен 1 (проверяемое число отрицательно), то выполняются те команды, которые начинаются с метки LABEL, а если этот бит равен 0 (проверяемое число положительно), то выполняются команды, следующие за командой условного перехода. Во многих машинах имеются биты кодов условий; например, это может быть бит переполнения, который принимает значение 1 всякий раз, когда арифметическая операция выдает неправильный результат. По этому биту проверяется правильность выполнения предыдущей арифметической операции и в случае ошибки запускается программа обработки ошибок. В некоторых процессорах есть специальный бит переноса, который принимает значение 1, если происходит перенос из самого левого бита (например, при сложении двух отрицательных чисел). Бит переноса нельзя путать с битом переполнения. Проверка бита переноса необходима для вычислений с повышенной точностью (то есть когда целое число представлено двумя или более словами). |