Статус нашего сайта: |
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 |
Таненбаум Э.- Архитектура компьютера. стр.302В листинге 5.4 представлен другой способ проверки, который дает правильные результаты даже при п < 0. Отметим, что если и увеличение счетчика, и проверка условия выполняются в одной команде, разработчикам придется выбирать один из двух методов. Листинг 5.4. Цикл с проверкой в начале i = 1; LI: if(i>n) goto L2; первый оператор; последний оператор; 1=1+1; goto L1; L2: Рассмотрим код, который породит компилятор при обработке следующей строки: for (1=0; 1<n; 1++) { операторы } Если у компилятора нет никакой информации о числе п, ему, чтобы корректно обработать случай п < 0, придется действовать так, как показано в листинге 5.4. Однако если компилятор определит, что п > 0 (например, проверив, какое значение присвоено п), он сможет использовать более эффективный код, представленный в листинге 5.3. Когда-то в стандарте языка FORTRAN требовалось, чтобы все циклы выполнялись хотя бы один раз. Это позволяло всегда порождать более эффективный код (как в листинге 5.3). В 1977 году этот дефект был исправлен, поскольку даже приверженцы языка FORTRAN начали осознавать, что не слишком хорошо иметь оператор цикла с такой странной семантикой, хотя она и позволяет экономить одну команду перехода на каждом цикле. Команды ввода-вывода Ни одна другая группа команд не различается в разных машинах так сильно, как команды ввода-вывода. В современных персональных компьютерах используются три разные схемы ввода-вывода: + программируемый ввод-вывод с активным ожиданием; + ввод-вывод с управлением по прерываниям; + ввод-вывод с прямым доступом к памяти. Мы рассмотрим каждую из этих схем по очереди. Самым простым методом ввода-вывода является программируемый ввод-вывод. Эта схема часто используется в дешевых микропроцессорах, например во встроенных системах или в таких системах, которые должны быстро реагировать на внешние изменения (системы реального времени). Подобные процессоры обычно имеют одну команду ввода и одну команду вывода. Каждая из этих команд выбирает одно из устройств ввода-вывода. Между фиксированным регистром процессора и выбранным устройством ввода-вывода передается по одному символу. Процессор должен выполнять определенную последовательность команд при каждом считывании и записи символа. В качестве примера рассмотрим терминал с четырьмя 1-байтными регистрами, как показано на рис. 5.20. Два регистра используются для ввода: регистр состояния устройства и регистр данных. Два регистра используются для вывода: тоже регистр состояния устройства и регистр данных. Каждый из них имеет уникальный адрес. Если имеет место ввод-вывод с отображением на память, все 4 регистра являются частью адресного пространства и могут считываться и записываться с помощью обычных команд, предназначенных для работы с памятью. В противном случае для чтения и записи регистров требуются специальные команды ввода-вывода, например IN и OUT. В обоих случаях ввод-вывод осуществляется путем передачи данных и информации о состоянии устройства между центральным процессором и указанными регистрами. |