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

Обновлено: 16.05.2024

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.

Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.

Оставляяпока в стороне вопросы целесообразности использования стека процессором ЭВМ, рассмотрим реализацию этого, как будет видно ниже, важного вида памяти. Обычно в ЭВМ стек реализуется в адресном пространстве ее оперативной памяти выделением под него определенного количества последовательных ячеек. Специфический способ доступа к ячейкам памяти, выделенным под стек, осуществляется путем специального режима адресации с использованием одного из регистров процессора, называемого регистром – указателем стека (УС или SP).

Запись числа в стек, организованный в памяти ЭВМ, иллюстрируется на рис.7.11.

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

а) Стек пустойб) Стек после в) Стек после загрузки загрузки числа 543 числа УС УСУС --память память память.

770 770 772 772 772 774 774 543 774 776 776.

Рис.7.При засылке в стек следующего числа опять происходит коррекция, т.е.

уменьшение содержимого указателя стека, и запись следующего числа уже в новую ячейку памяти. Таким образом, регистр – указатель стека всегда содержит адрес последней записанной ячейки стека, т.е. указывает на вершину стека.

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

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

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

а) Чтение числа из б) После считывания в) Запись в стек вершины стека числа числа УС УСУС -+память. память. память.

770 770 772 126 772 126 772 774 774 543 774 776 776.

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

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

7.6. Контрольные вопросы 1. Типы команд ЭВМ.

2. Какая информация кодируется в команде ЭВМ 3. Какие проблемы приходится решать при кодировании команд ЭВМ 4. Что такое адресация операндов, методы адресации 5. Что такое адресный код, исполнительный адрес, чем отличаются эти по нятия 6. Для чего в ЭВМ необходимо наличие разнообразных методов адресации операндов 7. Что такое подразумеваемый операнд, подразумеваемый адрес 8. Непосредственная адресация.

9. Абсолютная адресация.

10. Относительная адресация.

11. Регистровая адресация.

12. Косвенная адресация.

13. Регистровый и косвенно-регистровый методы адресации.

14. Косвенная адресация со смещением.

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

16. Использование регистра-счетчика команд при реализации непосредственного, абсолютного и относительного методов адресации.

17. Какой метод адресации следует использовать в перемещаемой программе для адресации данных, расположенных в теле программы 18. Какой метод адресации следует использовать в перемещаемой программе для адресации регистров внешних устройств 19. Что такое стек 20. Организация стека в оперативной памяти ЭВМ.

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

23. Какие методы адресации можно использовать для записи числа в стек, для чтения числа из стека 8. Команды управления выполнением программы 8.1. Команды безусловной и условной передачи управления Команды управления выполнением программы имеют большое значение, поскольку они позволяют вмешиваться в процесс автоматического формирования процессором адреса следующей выполняемой команды.

Как уже говорилось выше, процессор всегда выбирает очередную команду из той ячейки памяти, адрес которой в данный момент находится в регистре-счетчике команд. Осуществляя соответствующее изменение содержимого регистра–счетчика команд процессора, команды передачи управления позволяют вместо тривиальной последовательной выборки команд из памяти реализовать переходы в нужные точки программы. Переходы на адрес, задаваемый командами передачи управления, могут быть безусловными, т.е. выполняемыми в любом случае, и условными. Выполнение или не выполнение последних зависит от результата выполнения процессором команды, предшествующей команде условного перехода, например, команда – ВЕТВЛЕНИЕ, ЕСЛИ РЕЗУЛЬТАТ ОПЕРАЦИИ РАВЕН НУЛЮ. Команды безусловных и условных переходов позволяют обеспечивать, в частности, возможность реализации таких важных конструкций программирования, как циклы.

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

В системе команд ЭВМ существует целый набор разнообразных команд условных ветвлений. Это команды, осуществляющие переход в случае, например, когда результат предыдущей операции равен нулю, больше нуля, больше или равен нулю, меньше нуля и т.д. Каким же образом в процессоре осуществляется анализ результата предыдущей операции при выполнении команд условных переходов Как уже говорилось выше, после выполнения процессором каждой команды в зависимости от ее результата устанавливаются разряды–признаки (флаги) Z, N, V и C регистра состояния процессора. Например, после выполнения команды CMP (сравнение двух операндов) по состоянию флажков регистра состояния процессора можно определить соотношение величин сравниваемых операндов: равны, не равны, больше, меньше и т.д. При выполнении команд условных ветвлений процессор анализирует соответствие флажков регистра состояния процессора задаваемому командой условию и при выполнении этого условия осуществляет модификацию своего регистрасчетчика команд на величину задаваемого в команде смещения (положительного или отрицательного). При невыполнении заданного условия содержимое счетчика команд не корректируется и происходит обычная выборка следующей по порядку команды.

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

8.2. Контрольные вопросы 1. Команды безусловной и условной передачи управления (безусловного и условных переходов), их назначение, какие элементы процессора используются при их выполнении и каким образом 2. Какую роль при выполнении команд условных ветвлений играет регистр состояния процессора 9. Подпрограммы. Использование стека при вызове подпрограмм и возврате из них 9.1. Проблемы реализации подпрограмм Подпрограммой обычно называют часть программы, к которой можно многократно обращаться из других, причем разных, мест основной програм мы с последующим возвратом в место, откуда произошел вызов (см. рис.9.1).

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

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

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

Основная Подпрограмма 1 Подпрограмма 2 Подпрограмма программа началоначало начало.

вызов вызов вызов.

. возврат. возврат. возврат.

Рис.9.Рассмотрим, каким образом могут быть решены указанные выше проблемы вызова подпрограммы и возврата из нее.

9.2. Реализация вызова подпрограмм и возврата в основную программу Адрес ячейки памяти, на которую следует возвратиться из после выполнения подпрограммы, становится известным в момент обработки процессором команды ВЫЗОВ ПОДПРОГРАММЫ. Фактически это адрес команды, следующей за командой вызова подпрограммы. Мы знаем, что в момент после выборки этой команды из памяти в регистр команд процессора адрес, находящийся в это время в регистре–счетчике команд процессора, является адресом следующей по порядку команды. Другими словами, в момент, когда процессор приступает к интерпретации команды вызова подпрограммы, нужный нам адрес возврата из подпрограммы находится в регистресчетчике команд процессора. Поэтому вполне естественным для обеспечения в процессе выполнения команды ВЫЗОВ ПОДПРОГРАММЫ возможности правильного возврата из этой подпрограммы является предварительное сохранение в определенном месте текущего содержимого счетчика команд (адреса возврата) перед тем, как оно будет замещено адресом начала подпрограммы. Теперь для возврата из подпрограммы можно использовать этот предварительно сохраненный адрес возврата.

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

Таким местом, в котором удобно осуществлять запоминание адресов возврата, является стек. Собственно необходимость реализации механизма работы с подпрограммами и является причиной (хотя и не единственной) введения в архитектуру ЭВМ памяти, организованной в виде стека.

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

В ЭВМ автоматизация этих действий при обращении к подпрограммам осуществляется с помощью имеющейся в системе команд любой ЭВМ пары команд – это команда ВЫЗОВ ПОДПРОГРАММЫ, которая в разных ЭВМ может иметь мнемонику CALL, JSR, JSB, и команда ВОЗВРАТ ИЗ ПОДПРОГРАММЫ (RETURN, RET, RTS, RSB).

Аргументом команды ВЫЗОВ ПОДПРОГРАММЫ служит адрес входа в подпрограмму (адрес первой команды подпрограммы), задаваемый любым приемлемым методом адресации.

На рис.9.3 показано последовательное изменение состояния регистрасчетчика команд (СК), регистра-указателя стека (УС) и ячеек памяти стека при вложенных вызовах подпрограмм и возврате из них.

При выполнении команды ВЫЗОВ ПОДПРОГРАММЫ процессор осуществляет следующие действия:

Назовём задачи, которые трудно или невозможно решить без организации информационной связи между различными компьютерами:

· перенос информации на большие расстояния (сотни, тысячи километров);

· совместное использование несколькими компьютерами дорогостоящих аппаратных, программных или информационных ресурсов — мощного процессора, ёмкого накопителя, высокопроизводительного лазерного принтера, баз данных, программного обеспечения и т.д.;

· перенос информации с одного компьютера на другой при несовместимых флоппи-дисководах (5,25 и 3,5 дюйма);

· совместная работа над большим проектом, когда исполнили должны всегда иметь последние (актуальные) копии общих данных во избежание путаницы, и т.д.

· Есть три основных способа организации межкомпьютерной связи:

· объединение двух рядом расположенных компьютеров через их коммуникационные порты посредством специального кабеля;

· передача данных от одного компьютера к другому посредством модема с помощью проводных или спутниковых линий связи;

· объединение компьютеров в компьютерную сеть.

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

Сервер (англ. serve — обслуживать) — это высокопроизводительный компьютер с большим объёмом внешней памяти, который обеспечивает обслуживание других компьютеров путем управления распределением дорогостоящих ресурсов совместного пользования (программ, данных и периферийного оборудования).

Клиент (иначе, рабочая станция) — любой компьютер, имеющий доступ к услугам сервера.


Сетевой сервер
HP LD PRO

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

Клиентом также называют прикладную программу, которая от имени пользователя получает услуги сервера. Соответственно, программное обеспечение, которое позволяет компьютеру предоставлять услуги другому компьютеру, называют сервером — так же, как и сам компьютер. Для преодоления несовместимости интерфейсов отдельных компьютеров вырабатывают специальные стандарты, называемые протоколами коммуникации.

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

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

Адрес получателя Адрес отправителя Длина Данные Поле контрольной суммы

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

При установлении связи устройства обмениваются сигналами для согласования коммуникационных каналов и протоколов. Этот процесс называется подтверждением установления связи (англ. HandShake — рукопожатие).

Вопросы для самоконтроля

1. Какова роль аппаратуры (HardWare) и программного обеспечения (SoftWare) компьютера?

2. Какие основные классы компьютеров Вам известны?

3. В чём состоит принцип действия компьютеров?

4. Из каких простейших элементов состоит программа?

5. Что такое система команд компьютера?

6. Перечислите главные устройства компьютера.

7. Опишите функции памяти и функции процессора.

8. Назовите две основные части процессора. Каково их назначение?

9. Что такое регистры? Назовите некоторые важные регистры и опишите их функции.

10. Сформулируйте общие принципы построения компьютеров.

11. В чём заключается принцип программного управления? Как выполняются команды условных и безусловных переходов?

12. В чём суть принципа однородности памяти? Какие возможности он открывает?

2.13. В чём заключается принцип адресности?

14. Какие архитектуры называются "фон-неймановскими"?

15. Что такое команда? Что описывает команда?

16. Какого рода информацию может содержать адресная часть команды?

17. Приведите примеры команд одноадресных, двухадресных, трёхадресных.

18. Каким образом процессор при выполнении программы осуществляет выбор очередной команды?

19. Опишите основной цикл процесса обработки команд.

20. Что понимается под архитектурой компьютера? Какие характеристики компьютера определяются этим понятием? Верно ли, что общность архитектуры разных компьютеров обеспечивает их совместимость в плане реализации функциональных элементов?

21. Что понимается под структурой компьютера? Какой уровень детализации описания компьютера может она обеспечить?

22. Перечислите распространённые компьютерные архитектуры.

23. Каковы отличительные особенности классической архитектуры?

24. Что собой представляет шина компьютера? Каковы функции общей шины (магистрали)?

25. Какую функцию выполняют контроллеры?

26. Как характер решаемых задач связан с архитектурой компьютера?

27. Какие отличительные особенности присущи многопроцессорной архитектуре? Многомашинной архитектуре? Архитектуре с параллельным процессором?

28. Что такое центральный процессор?

29. Какие основные компоненты содержат в себе современные микропроцессоры?

30. Как конструктивно выполнены современные микропроцессоры?

31. Перечислите основные и производные единицы измерения количества памяти.

32. Назовите две основные разновидности памяти компьютера.

33. Перечислите основные компоненты внутренней памяти.

34. Что представляет собой ОЗУ? Каково её назначение?

35. В чём разница между памятью статической и динамической?

36. Что собой представляет модуль памяти типа SIMM? Какие другие типы модулей памяти Вы знаете?

37. Каково назначение кэш-памяти? Каким образом она реализуется?

38. Что такое специальная память? Характеризуйте её основные виды.

39. Что такое BIOS и какова её роль?

40. Каково назначение внешней памяти? Перечислите разновидности устройств внешней памяти.

41. Что собой представляет гибкий диск?

42. В чём суть магнитного кодирования двоичной информации?

43. Как работают накопители на гибких магнитных дисках и накопители на жёстких магнитных дисках?

44. Каковы достоинства и недостатки накопителей на компакт-дисках?

45. Опишите работу стримера.

46. Как работает аудиоадаптер? Видеоадаптер?

47. Какие типы видеоплат используются в современных компьютерах?

48. Назовите главные компоненты и основные управляющие клавиши клавиатуры.

49. Перечислите основные компоненты видеосистемы компьютера.

50. Как формируется изображение на экране цветного монитора?

51. Как устроены жидкокристаллические мониторы? Проведите сравнение таких мониторов с мониторами, построенными на основе ЭЛТ.

52. Опишите работу матричных, лазерных и струйных принтеров.

53. Чем работа плоттера отличается от работы принтера?

54. Опишите способ передачи информации посредством модема.

55. Перечислите основные виды манипуляторов и опишите принципы из работы.

56. Что понимают под персональным компьютером?

57. Какие характеристики компьютера стандартизируются для реализации принципа открытой архитектуры?

58. Что такое аппаратный интерфейс?

59. Каково назначение контроллеров и адаптеров? В чём заключается разница между контроллером и адаптером?

60. Что такое порты устройств? Охарактеризуйте основные виды портов.

61. Перечислите основные блоки современного компьютера.

62. Каково назначение межкомпьютерной связи?

63. Опишите технологию "клиент–сервер".

64. Каким образом преодолевается проблема несовместимости интерфейсов в компьютерных сетях?

65. Что такое протокол коммуникации?

66. Почему данные передаются при помощи пакетов?[kgl]

[gl]ЛЕКЦИЯ 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРОВ[:]

как работает процессор и языки программирования

Эта статья будет полезна всем, кто по каким-либо причинам не знает, как работает процессор, как и зачем появились языки программирования и принцип их работы.

Все описанное ниже как всегда упрощено для лучшего понимания.

Процессор и оперативная память

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

процессор управляет всеми устройствами и процессами в компьютере

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

Процессор знает много команд и у каждой из них есть свой числовой код, например:

  • 35 — скопировать данные из одной ячейки памяти в другую
  • 48 — сложить 2 числа
  • 12 — выполнить логическую операцию OR (или)


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


Понимаете прикол? Это значит, что вам нужно писать код для каждой архитектуры процессора. Жуть.

Так. Понятно. Процессор может выполнять маленькие числовые команды. Но откуда он их берет? Из оперативной памяти. Думайте об оперативке, как о большом количестве маленьких ячеек. Каждая ячейка имеет свой адрес — это обычное число, например 2001. По адресу ячейки процессор может запросить данные и оперативная память вернет их ему. Также в эту ячейку процессор может записать новые данные.

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

Получается такая картина: процессор обращается к оперативной памяти по адресу ячейки, оперативка возвращает ему команду из этой ячейки, процессор выполняет команду. А что дальше? А дальше процессор опять обращается к памяти (уже в другую ячейку), получает команду, выполняет ее и этот цикл повторяется снова и снова. То есть процессор все время выполняет какую-то заданную последовательность команд (числовых кодов). Эта последовательность команд называется машинным кодом.

как работает процессор и оперативная память

Ассемблер

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

Для того, чтобы заставить процессор выполнить какую-то программу, например решить уравнение 2 + 2 * 2, нам нужно написать цепочку простых числовых команд.

процессор выполняет цепочка команд из числовых кодов команд

Согласитесь, что писать такой код очень сложно и легко запутаться. И это мы всего лишь написали код для решения простого уравнения. А теперь представьте, как написать ВКонтактик или Инстаграм.

Для упрощения жизни люди придумали инструмент Ассемблер и язык программирования на ассемблере.

Теперь все числовые коды команд процессора заменили на буквенные аббревиатуры, которые стало легче запоминать и читать.

Помните примеры кодов команд, которые были указаны выше? Теперь они выглядят так:

  • MOV (числовой код 35) — скопировать данные из одной ячейки памяти в другую
  • ADD (числовой код 48) — сложить 2 числа
  • ORL (числовой код 12) — выполнить логическую операцию OR (или)

Также к названию команд были добавлены операнды (один или более), которые дают дополнительную информацию для выполнения команды.

пример кода на языке assembler

Рассмотрим еще один пример программы на ассемблере, которая выводит фразу «Hello, World!«. Пример ассемблированного кода:

Что-то слишком много непонятного кода для такой пустяковой задачи, не правда ли?

Языки программирования высшего уровня

Помните в самом начале я писал, что каждый производитель процессоров делает свою архитектуру? И что у каждой архитектуры свои числовые коды команд?

Это усложняет портативность. Добавим сюда сложность в написании больших программ и получим необходимость в создании новых инструментов.

Так стали появляться языки программирования высокого уровня.

Компилируемые языки

Первыми появились компилируемые языки программирования. К ним относится С, С++, Java и другие.

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

процессор не понимает код высшего порядка напрямую

Но процессор не поймет этой команды. Как мы помним, он знает и понимает только маленькие числовые команды. Поэтому компилятор языка C преобразует команду в ассемблированный код, а затем в машинный код, понятный процессору.

как работает компилятор

Программа, написанная на компилируемом языке программирования, перед запуском всегда проходит процесс компиляции. То есть весь написанный код высшего порядка преобразуется в машинный код, понятный процессору.

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

компилятор языка C собрал исполняемый файл

Но у некоторых компиляторов есть свой прикол: чтобы ваша программа работала на всех операционных системах и всех архитектурах процессоров, вам нужно скомпилировать ее для этих вещей. И это может быть не так удобно.

Интерпретируемые языки

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

Вот тут в ход идут интерпретируемые языки программирования такие как: Python, PHP, Perl, Pascal и другие.

Это тоже языки высшего порядка, которые также упрощают написание кода. Но у них есть как минимум два преимущества перед компилируемыми языками:

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

Интерпретатор работает почти так же, как и компилятор, но с одной маленькой, но значительной особенностью: он преобразует код высшего порядка не в машинный код, а еще ниже — в байткод.

как работает интерпретатор

Байткод — это код, который понимают все процессоры не зависимо от архитектуры.

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

Подытожим

Байткод — саааамый низкий язык, который понимает процессор.

Машинный код — цепочка числовых команд. Все числовые команды процессора создают архитектуру процессора, заложенную инженерами при проектировании. У разных производителей процессоров могут отличаться номера одних и тех же команд.

Ассемблер — инструмент, который преобразует ассемблированный код в машинный. Программы на ассемблированном языке писать проще, чем машинный код, но все равно гемор.

Компилятор и Интерпретатор — инструменты, преобразующие код высшего уровня в код, понятный процессору.

Язык высшего уровня — это сказка, позволяющая создавать большие программы с помощью простых и понятных функций.

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

Если вы с чем-то не согласны, у вас есть вопросы или просто хотите сказать спасибо — прошу в комментарии. Пообщаемся 🙂

Микропроцессор выполняет программу, которая представляет собой последовательность команд. Каждая команда – это определенное действие, которое выполняет арифметико-логическое устройство.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Внутри АЛУ находятся блоки, каждый из которых может выполнять

одно или несколько действий, какой именно блок будет использоваться – определяется командой. Рассмотрим подробнее, каким образом это происходит.

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

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Данные, с которыми работает АЛУ – операнды и результат – хранятся в одном из блоков

памяти. Работа с памятью – также функция АЛУ. Скорость обмена данными с внешними блоками памяти очень низкая по сравнению со скоростью работы АЛУ. Поэтому внутри МП предусмотрены ячейки памяти – регистры общего назначения, скорость чтения и записи в которые совпадает со скоростью работы АЛУ. В качестве операндов обычно может использовать только данные, которые хранятся во внутренних регистрах МК общего назначения. Результат также будет помещен в один из этих регистров. В команде обычно указано, из какого регистра берутся входные операнды и в какой регистр должен быть записан результат. Для работы с данными АЛУ сначала копирует данные из памяти в регистры, для чего предусмотрены отдельные команды.Все данные, необходимые для работы в ближайшее время, должны быть скопированы из памяти в регистры. А если получен результат, который не будет использоваться в ближайшее время, он может быть скопирован в память. Этот алгоритм позволяет существенно ускорить работу процессора. Хранить все данные в регистрах невозможно, т.к. объем регистров значительно меньше объема оперативной памяти, т.к. сделать быструю память большого объёма на одном кристалле с АЛУ технологически сложно и дорого.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

По функциональному назначению команды можно разделить на четыре группы: команды

пересылки данных, арифметические команды, логические команды и команды переходов.

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Команды пересылки данных осуществляют загрузку данных из памяти во внутренние регистры процессора, сохранение в памяти содержимого регистров, копирование данных из одной области памяти в другую и обмен данными с устройствами ввода-вывода

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Группа арифметических команд реализует большинство арифметических операций –сложение, вычитание, умножение, деление, возведение в степень и другие. Операции над числами с фиксированной запятой (т.е. целыми числами) и над числами с плавающей запятой осуществляются разными командами, т.к. внутри АЛУ эти операции будут выполняться в разных блоках. Также к арифметическим командам относят команду очистка (т.е. запись нулевого значения в некоторый регистр), команды инкремента и декремента – т.е. увеличения или уменьшения значения на 1 и команда сравнения. Команда сравнения в результате выдает 0, если число отрицательно и 1, если число положительно

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

Логические команды реализуют логические операции – и, или, не, сложение по модулю 2, битовые сдвиги, установку и очистку битов регистра состояния процессора. Команды переходов могут менять порядок выполнения программы. Обычный порядок – это последовательное выполнение команд, одна за другой. В специальном регистре микропроцессора записано значение счетчика команд и при последовательном выполнении значение счетчика каждый раз увеличивается на 1

Цифровые устройства и микропроцессоры Лекция 2 Система команд процессора Ч1 Микропроцессор, Электроника, Длиннопост

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

Читайте также: