Можно ли нарушить последовательность выполнения команд в программе для чего это может потребоваться

7.1 – Введение в порядок выполнения программы

Когда программа запускается, CPU начинает выполнение с начала main() , выполняет какое-то количество инструкций (по умолчанию в последовательном порядке), а затем, в конце main() , программа завершается. Конкретная последовательность инструкций, выполняемых процессором, называется путем выполнения программы (или, для краткости, просто путем).

Рассмотрим следующую программу:

#include int main() < std::cout ; std::cin >> x; std::cout

Путь выполнения этой программы включает в себя строки 5, 7, 8, 10 и 12 в указанном порядке. Это пример прямолинейной программы. Прямолинейные программы при каждом запуске проходят один и тот же путь (выполняют одни и те же инструкции в одном и том же порядке).

Однако часто это не то, что нам нужно. Например, если мы просим пользователя ввести данные, а пользователь вводит что-то недопустимое, в идеале мы хотели бы попросить пользователя сделать другой выбор. В прямолинейной программе это невозможно. На самом деле, пользователь может неоднократно вводить недопустимые данные, поэтому, сколько раз нам может потребоваться попросить его сделать другой выбор, будет неизвестно до времени выполнения.

Ограниченные последовательности. Ответы

К счастью, C++ предоставляет ряд различных инструкций управления порядком выполнения, которые представляют собой инструкции, которые позволяют программисту изменять обычный путь выполнения программы. Вы уже видели пример этого с инструкциями if (представленными в уроке «4.10 – Знакомство с инструкциями if »), которые позволяют нам выполнять инструкцию, только если условное выражение истинно.

Когда инструкция управления порядком выполнения вызывает изменение точки выполнения на инструкцию, не идущую последовательно, это называется ветвлением.

Категории инструкций управления порядком выполнения программы

КатегорияЗначениеРеализовано в C++ с помощью
Условные операторы Условные операторы вызывают выполнение последовательности кода, только если выполняется какое-то условие. if , switch
Переходы Переходы говорят процессору начать выполнение инструкций в каком-то другом месте. goto
Вызовы функций Вызов функции – это переход в другое место, а затем обратно в исходную точку. вызовы функций
Циклы Циклы говорят программе многократно выполнять некоторую последовательность кода ноль или более раз, пока не будет выполнено какое-либо условие. while , do — while , for , for на базе диапазона
Остановки Остановки говорят программе о прекращении работы. std::exit() , std::abort()
Исключения Исключения – это особый вид структуры управления порядком выполнения, предназначенный для обработки ошибок. try , throw , catch

В данной главе мы подробно рассмотрим все эти категории, за исключением исключений (ха!), которым мы посвятим целую главу (глава 20).

C++ | Является ли последовательность возрастающей

До этой главы количество вещей, которые вы могли сделать с помощью программ, было довольно ограниченным. Возможность контролировать ход выполнения вашей программы (особенно с помощью циклов) делает возможным множество интересных вещей! Вы больше не будете ограничены игрушечными программами и учебными упражнениями – вы сможете писать программы, которые действительно полезны.

Здесь начинается самое интересное. Итак, приступим!

Источник: radioprog.ru

Урок 12
Принципы устройства компьютеров
§32. Принципы устройства компьютеров. §33. Магистрально-модульная организация компьютера

1. Найдите материалы, подтверждающие, что Джон фон Нейман не был единоличным автором «фон-неймановской» архитектуры ЭВМ.
2. Перечислите принципы фон-неймановской архитектуры и кратко объясните каждый из них.
3. Назовите основные компоненты вычислительного устройства. Каково их назначение? Согласны ли вы с тем, что полученный набор узлов логичен и обоснован?
4. В чём состоит принцип двоичного кодирования?
5. Вспомните, как кодируются в компьютере числа, тексты, графика. Соблюдается ли принцип двоичного кодирования?
6. По какому алгоритму вводимые в компьютер десятичные числа можно перевести во внутреннее двоичное представление? Как перевести обратно результаты расчёта?
7. Что такое ячейка памяти? Что такое адрес ячейки?
8. Что вы знаете о разрядности ячеек ОЗУ разных поколений?
9. Почему появилась байтовая память?
10. Можно ли заменить в ячейке памяти содержимое одного бита, не затрагивая значений соседних? Почему?
11. Приведите примеры различных типов данных и назовите их разрядность. Сколько байтов памяти потребуется для хранения данных каждого из этих типов?
12. Что такое иерархическая организация памяти?
13. Почему большая по объёму память обычно работает медленнее, чем маленькая?
14. В чём состоит принцип хранимой программы?
15. Где может храниться программа?
16. Можно ли к нечисловым данным (символам, графическим и звуковым данным) применять арифметические операции?
17. Как вы понимаете фразу «Любая обработка данных в вычислительной машине происходит по программе»? Чем компьютер в этом отношении отличается от простого калькулятора?
18. Сформулируйте основной алгоритм выполнения команды в компьютере.
19. Что такое счётчик адреса команд и какова его роль в основном алгоритме?
20. Опишите, что происходит в момент включения компьютера с точки зрения принципа программного управления.
21. Можно ли нарушить последовательность выполнения команд в программе? Для чего это может потребоваться?
22. Всегда ли в новом компьютере есть какая-либо программа?
23. Что такое конвейер и как он работает при выполнении программы? *24. Почему команды перехода нарушают работу конвейера?
25. Какие из принципов, предложенных в работе «Предварительное рассмотрение логической конструкции электронного вычислительного устройства», продолжают применяться в современных компьютерах безо всяких изменений, а какие сохранились, но в несколько изменённом виде? Объясните, почему потребовались эти изменения.
26. Что такое архитектура? Какие детали устройства компьютера к ней не относятся?
27. В чём преимущества единой архитектуры семейств ЭВМ для пользователей и для производителей?
28. Какие семейства вычислительных машин вы знаете?

Читайте также:
Пинакл студио что это за программа

Подготовьте сообщение

а) «Джон фон Нейман и его вклад в науку»
б) «Троичная ЭВС «Сетунь»»
в) «Гарвардская архитектура»
г) «Архитектуры современных компьютеров»

Следующая страница Задачи

Cкачать материалы урока

Источник: xn—-7sbbfb7a7aej.xn--p1ai

Стандартный цикл команды

Программа в фон-неймановской ЭВМ реализуется центральным процессором (ЦП) посредством последовательного исполнения образующих эту программу команд. Действия, требуемые для выборки (извлечения из основной памяти) и выполнения команды, называют циклом команды. В общем случае цикл команды включает в себя несколько составляющих (этапов):

• формирование адреса следующей команды;

• вычисление адресов операндов;

Перечисленные этапы выполнения команды называются стандартным циклом команды. Не все из этапов присутствуют при выполнении любой команды (зависит от типа команды), тем не менее этапы выборки, декодирования, формирования адреса следующей команды и исполнения имеют место всегда.

В определенных ситуациях возможны еще два этапа:

• реакция на прерывание.

Этап выборки команды. Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоичный код команды помещается в регистр команды (РК) и с этого момента становится «видимым» для процессора. Без учета промежуточных пересылок и сигналов управления это можно описать следующим образом: РК:= ОП [(СК)].

Приведенная запись охватывает весь этап выборки, если длина команды совпадает с разрядностью ячейки памяти. В то же время, система команд многих вычислительных машин предполагает несколько форматов команд, причем в разных форматах команда может занимать 2 или более ячеек, а этап выборки команды можно считать завершенным лишь после того, как в регистр команды будет помещен полный код команды.

Информация о фактической длине команды содержится в полях кода операции и способа адресации. Обычно эти поля располагают в первом слове кода команды, и для выяснения необходимости продолжения процесса выборки необходимо предварительное декодирование их содержимого. Такое декодирование может быть произведено после того, как первое слово кода команды окажется в регистре команд. В случае многословного формата команды процесс выборки продолжается вплоть до занесения в регистр команд всех слов команды. Например, для 16-разрядной команды, занимающей две 8-разрядные ячейки памяти, выборку можно описать так:

Читайте также:
Программа evernote что это такое

ПСтРК: РК(15-8):=0П[(СК)]; ‘Занесение в РК старшего

ПМлРК: РК(7-0):=ОП[(СК)]. ‘Занесение в РК младшего

Этап декодирования команды. После выборки команды она должна быть декодирована, для чего центральный процессор расшифровывает находящийся в регистре команд код команды. В результате декодирования выясняются следующие моменты:

• находится ли в регистре команд полный код команды или требуется дозагрузка остальных слов команды;

• какие последующие действия нужны для выполнения данной команды;

• если команда использует операнды, то откуда они должны быть взяты (номер регистра или адрес ячейки основной памяти);

• если команда формирует результат, то куда этот результат должен быть направлен.

Ответы на два первых вопроса дает расшифровка кода операции, результатом которой может быть унитарный код, где каждый разряд соответствует одной из команд, что можно описать в виде УнитК:=DECOD(Koп). На практике вместо унитарного кода могут встретиться самые разнообразные формы представления результатов декодирования, например адрес ячейки специальной управляющей памяти, где хранится первая микрокоманда микропрограммы для реализации указанной в команде операции.

Полное выяснение всех аспектов команды, помимо расшифровки кода операции, требует также анализа адресной части команды, включая поле способа адресации.

По результатам декодирования производится подготовка электронных схем вычислительной машины к выполнению предписанных командой действий.

Этап выборки операндов. Данный этап характерен для команд обработки операндов. Вычисленные на предыдущем этапе исполнительные адреса используются для считывания операндов из памяти и занесения в определенные регистры процессора. Например, в случае арифметической команды операнд после извлечения из памяти может быть загружен во входной регистр АЛУ. Однако чаще операнды предварительно заносятся в специальные вспомогательные регистры процессора, а их пересылка на вход АЛУ происходит на этапе исполнения операции.

Этап записи результата. Этап записи результата присутствует в цикле тех команд, которые предполагают занесение результата в регистр или ячейку основной памяти. Фактически его можно считать частью этапа исполнения, особенно для тех команд, которые помещают результат сразу в несколько мест.

Этап формирования адреса следующей команды. Для фон-неймановских машин характерно размещение соседних команд программы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, для вычисления адреса следующей выполняемой команды достаточно увеличить содержимое счетчика команд на длину текущей команды, представленную количеством занимаемых кодом команды ячеек памяти. Для однословной команды это описывается микрооперацией: +1СК: СК:= СК +.

Читайте также:
Leader task manager что это за программа

Длина команды, а также то, способна ли она изменить естественный порядок выполнения команд программы, выясняются в ходе предварительного декодирования. Если извлеченная команда способна изменить последовательность выполнения программы (команда условного или безусловного перехода, вызова процедуры и т. п.), процесс формирования адреса следующей команды переносится на этап исполнения операции. В силу сказанного, в ряде вычислительных машин рассматриваемый этап цикла команды следует не за выборкой команды, а находится в конце цикла.

Источник: studopedia.ru

Цикл команды

Программа в фон-неймановской ЭВМ реализуется центральным процессором (ЦП) посредством последовательного исполнения образующих эту программу команд. Действия, требуемые для выборки (извлечения из основной памяти) и вы­полнения команды, называют циклом команды, В общем случае цикл команды вклю­чает в себя несколько составляющих (этапов):

  • выборку команды;
  • формирование адреса следующей команды;
  • декодирование команды;
  • вычисление адресов операндов;
  • выборку операндов;
  • исполнение операции;
  • запись результата.
  • косвенная адресация;
  • реакция на прерывание.

Стандартный цикл команды

Кратко охарактеризуем каждый из вышеперечисленных этапов стандартного цик­ла команды. При изучении данного материала следует учитывать, что приводимое описание имеет целью лишь дать представление о сущности каждого из этапов. В то же время распределение функций по разным этапам цикла команды и после­довательность выполнения некоторых из них в реальных ВМ могут отличаться от излагаемых.

Этап выборки команды

Цикл любой команды начинается с того, что центральный процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд (СК). Двоич­ный код команды помещается в регистр команды (РК) и с этого момента стано­вится «видимым» для процессора. Приведенная запись охватывает весь этап выборки, если длина команды совпа­дает с разрядностью ячейки памяти.

В то же время система команд многих ВМ предполагает несколько форматов команд, причем в разных форматах команда может занимать 1, 2 или более ячеек, а этап выборки команды можно считать за­вершенным лишь после того, как в РК будет помещен полный код команды. Ин­формация о фактической длине команды содержится в полях кода операции и спо­соба адресации. Обычно эти поля располагают в первом слове кода команды, и для выяснения необходимости продолжения процесса выборки необходимо предва­рительное декодирование их содержимого. Такое декодирование может быть про­изведено после того, как первое слово кода команды окажется в РК. В случае мно­гословного формата команды процесс выборки продолжается вплоть до занесения в РК всех слов команды.

Этап формирования адреса следующей команды

Для фон-неймановских машин характерно размещение соседних команд програм­мы в смежных ячейках памяти. Если извлеченная команда не нарушает естественного порядка выполнения программы, для вычисления адреса следующей выпол­няемой команды достаточно увеличить содержимое счетчика команд на длину те­кущей команды, представленную количеством занимаемых кодом команды ячеек памяти. Длина команды, а также то, способна ли она изменить естественный порядок выполнения команд программы, выясняются в ходе ранее упоминавшегося пред­варительного декодирования. Если извлеченная команда способна изменить по­следовательность выполнения программы (команда условного или безусловного перехода, вызова, процедуры и т. п.), процесс формирования адреса следующей команды переносится на этап исполнения операции. В силу сказанного, в ряде ВМ рассматриваемый этап цикла команды следует не за выборкой команды, а нахо­дится в конце цикла.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
eft-soft.ru