Система команд

Система команд ЭВМ: основные типы и форматы

Источник: https://zdamsam.ru/b13269.html

Система команд

система команд исполнителя
Систе́ма кома́нд (также набо́р команд) — соглашение о предоставляемых архитектурой средствах программирования, а именно: определённых типах данных, инструкций, системы регистров, методов адресации, моделей памяти, способов обработки прерываний и исключений, методов ввода и вывода.

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

Например, Intel Pentium и AMD Athlon имеют почти идентичные версии системы команд x86, но имеют радикально различный внутренний дизайн.)

Базовыми командами являются, как правило, следующие:

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

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

  • Если объединить наиболее часто используемую последовательность микроопераций под одной микрокомандой, то надо будет обеспечивать меньше микрокоманд. Такое построение системы команд носит название CISC (Complex Instruction Set Computer), в распоряжении имеется небольшое число составных команд.
  • С другой стороны, это объединение уменьшает гибкость системы команд. Вариант с наибольшей гибкостью — наличие множества близких к элементарным операциям команд. Это RISC (Reduced Instruction Set Computer), в распоряжении имеются усечённые, простые команды.
  • Ещё большую гибкость системы команд можно получить, используя MISC-подход, построенный на уменьшении количества команд до минимального и упрощении вычислительного устройства обработки этих команд.

См. также

  • Список систем команд
  • Архитектура набора команд

система команд исполнителя

Система команд Информацию О

Система команд

Система команд
Система команд Вы просматриваете субъект
Система команд что, Система команд кто, Система команд описание

There are excerpts from wikipedia on .postlight.com”>

Источник: https://www.turkaramamotoru.com/ru/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4-60804.html

5.7. Система команд

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

В различных программах ЭВМ частота появления команд различна; например, по данным фирмы DEC в программах для ЭВМ семейства PDP-11 наиболее часто встречается команда передачи MOV(B), на ее долю приходится приблизительно 32 % всех команд в типичных программах.

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

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

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

Сокращение времени выполнения программ и емкости памяти достигается за счет увеличения сложности логики управления.

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

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

Классификация команд по основным признакам представлена на рис. 5.6. Важнейшим структурным элементом формата любой команды является код операции (КОП), определяющей действие, которое должно быть выполнено.

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

Число бит, отводимое под КОП, является функцией полного набора реализуемых команд.

При использовании фиксированного числа бит под КОП для кодирования всех m команд необходимо в поле КОП выделить двоичных разрядов.

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

В некоторых командах необходим только один операнд, и они называются однооперандными (или одноадресными) командами в отличие от двухоперандных (или двухадресных), в которых требуются два операнда.

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

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

Ниже приведен формат двухадресной (двухоперандной) команды процессоров семейства СМ.

Таблица 5.1

Примеры кодирования двухадресных команд в процессорах СМ

Все команды можно разделить на 3 группы:

1.Команды преобразования кода.

(лог. и арифм. операции пр-я кодов)

2.Команды изменения положения (перемещ-я) информации внутри с-м.

(пересылка из одной ЯП в др., команда обмена данными мд внутренним регистром и памятью, пересылка регистррегистр, работа с ВУ: с регистрами IO.)

3.Команды управления (влияют на работу процессора, не изменяя и не перемещая данные).

3.1. Арифметика (4 или более команды). Логические команды. Команды, связанные с представление чисел.

3.2. Команды перемещения по памяти. Пересылки между регистрами из памяти в регистр и т.д.

3.3. Команды управления:

– команды изменения порядка выборки:

– безусловные команды (действие команд не зависит ни от чего).

– условие (действие зависит от условия).

– команды изменения режима работы процессора (HALT,STOP-ожидает прерывание ,WAIT). Режим пользователя (вып. привилегиров. команд, режим системы (вып. все команды).

– команды перехода

– команды перехода с возвратом (программные прерывания и команды обращения к процедурам (CALL)).

– команды цикла

Программа представленная в виде кодов называется машинной командой. Формат команды – структура, привязанная к разрядной сетке.

Что делать Над чем делать

Бывают одноадресные и двухадресные команды.

Адресация операндов

Идентификатором операнда является адрес ячейки памяти в Фон-неймановской модели. Систему адресации модифицировали: прямо в команде пишется операнд; относительная адресация ( адрес, который пишется в команде не является адресом операнда , а является адресом смещения); косвенная адресация.

Косвенная адресация – записывается адрес адреса.

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

Структура: сумматор, три регистра (внешний мир.)

9.RISC и CISC процессоры с точки зрения системы команд: общие идеи и сравнительные характеристики.

RISC – процессор с сокращенным набором команд

CISC – процессор с расширенным набором команд.

Требования к RISC:

1. Любая операция, независимо от ее типа выполняется за 1 такт.

2. Система команд содержит минимальный набор наиболее часто используемых простых команд одинаковой длины.

3. Операции обработки данных реализуются только в формате «регистр- регистр». Пересылка данных между регистрами и оперативной памятью осуществляется с помощью специальных команд загрузки/записи.

4. Состав система команд должен быть удобен для написания трансляторов с языков высокого уровня.

Такие микропроцессоры уникальны по показателю «число команд в единицу времени». Достижение максимально возможной производительности стало целью разработки RISC процессоров.

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

В настоящее время полноразрядноым словом как для плавающей так и для фиксированной запятой при выполнении арифметических операций считается 64 двоичных разряда.

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

Требование выполнения команды за 1 такт трансформировалось в требование формирования одного 64 разрядного результата за 1 такт. Система команд значительно расширилась и если в первых RISC процессорах число команд едва достигало 50, то в современных может быть более 150. По функциональному набору команд современные CISC и RISC процессоры едва различимы.

Основными внешними признаками RISC процессоров стали:

– фиксированная длина команд

– отсутствие команд работы с оперативной памятью, кроме команд обмена данными память-регистр.

– Темп выдачи результатов (в установившемся режиме) один 64 разрядный результат за каждый такт.

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

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

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

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

В RISC процессорах пока в основном используется аппаратный механизм выборки из буфера команд несвязанных команд и запуск их на параллельное исполнение. Другой способ реализующий загрузку суперскалярной архитектуры заключается в изменении всего процесса компиляции и исполнения.

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

В пакете содержатся команды, которые процессор может выполнить параллельно.

Сформированные пакеты операций преобразуются компилятором в командные слова получившие название VLIW – Very Large Instruction Word – очень широкое командное слово.

По идее такой подход должен привести к упрощению схем процессора т.к. не надо искать независимых команд и повышение производительности.

Процессоры, использующие такой подход получили название процессоров с VLIW архитектурой.

Широкое внедрение VLIW архитектуры сдерживается отсутствием соответствующих компиляторов, но работы в этой области ведутся.

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

– большого количества оперативных регистров (>32 (138))

– встроенной КЭШ памяти одного или нескольких уровней

– управления внешней КЭШ

– механизм предвыборки команд и прогнозирования ветвлений.

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

Структура RISC процессора

КЭШ 2-го уровня предназначен для общения с внешним уровнем.

БОД – блок обработки данных.

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

Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:

КОП Мнемоника команды Комментарий
0001001001101110 MOVCMPADDSUB Передача данныхСравнениеСложениеВычитание
00001000 Кодирование группыодноадресных команд

Четырехбитный КОП (биты 15-12) кодирует ряд двухоперандных операций, приведенных в табл. 5.1. Биты (11-6) и (5-0) для команд данного типа определяют адреса источника и приемника данных.

Как видно из таблицы, комбинации 0000 и 1000 поля КОП определяют группы одноадресных команд (рис 5.7, б). КОП 1 (биты 15-12), соответствующий кодам 0000 и 1000, определяет группу одноадресных команд, а КОП 2 (биты 11-6) кодирует конкретную операцию команд данной группы.

Таким образом, команды, использующие один операнд, кодируются 10-битным КОП (биты 15-6).

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

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

Поэтому в большинстве микроЭВМ любой команде требуется не более двух операндов. Это достигается следующими приемами:

1) Адрес следующей команды указывается только в командах переходов; в остальных случаях очередная команда выбирается из ячеек памяти, следующих за выполненной командой.

2) Использование ячейки, в которой находится один из операндов, для запоминания результата (например, сумма запоминается в ячейки первого операнда).

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

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

По форматам команд можно судить о возможностях ЭВМ.

Источник: http://libraryno.ru/5-7-sistema-komand-app_and_prog_sr/

Алгоритм и исполнитель

Записывайся на этот курс на Stepike!

Пожалуйста, приостановите работу AdBlock на этом сайте.

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

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

Рис.1 Скриншот игрового поля на code.org

Надеюсь, у вас всё получилось. Теперь на этом примере опишем несколько основных понятий:

  • исполнитель;
  • система команд исполнителя;
  • алгоритм.

В игрушке мы управляем красной птичкой. Задача каждого этапа: добраться птичкой до свиньи. Птичка умеет выполнять определённые команды, например: переместить вперёд, повернуть налево, повернуть направо и др.

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

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

Необходимо заострить внимание на нескольких моментах.

Важно!

Исполнитель может выполнять только те команды, которые входят в его систему команд.

Это означает, например, что нельзя написать исполнителю-птичке: «Иди к свинье!». Точнее записать можно, но только ничего не произойдёт, т.к. исполнитель таких команд не знает.

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

Важно!

Исполнитель выполняет точно то, что предписывает ему алгоритм.

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

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

Теперь от наглядного примера перейдём к компьютерным реалиям. Мы пишем программы для компьютера, а значит, компьютер в нашем случае является исполнителем. Система команд – стандартные функции и конструкции языка Си.

В чём состоит основная задача вашего обучения основам программирования? Овладеть навыком алгоритмического мышления. То есть научиться записывать решение различных задач в виде алгоритма для конкретного исполнителя (в нашем случае компьютера).

Итак, подытожим:

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

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

Исполнитель – человек или некоторое устройство, которое может понимать и выполнять определённый набор команд.

Система команд исполнителя – набор команд, которые понимает и умеет выполнять исполнитель.

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

Решите предложенные задачи. Для удобства работы сразу переходите в полноэкранный режим

Подборка задач из Единого государственного экзамена на тему Анализ и построение алгоритмов для исполнителей (*.doc) на сайте К.Ю. Полякова. И ответы для самопроверки.
Зеркала на этом сайте: Задачи и ответы (нужный столбец отмечен зелёным цветом)

Источник: http://YoungCoder.ru/lessons/5/

Форматы команд

Система команд процессора

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

Каждый процессор имеет собственный вполне определœенный набор команд, называемый системой команд процессора.

Система команд должна обладать двумя свойствами — функциональной полнотой и эффективностью.

Функциональная полнота — это достаточность системы команд для описания любого алгоритма. Требование функциональной полноты не является слиш­ком жестким.

Доказано, что свойством функциональной полноты обладает система, включающая всœего три команды (система Поста): присвоение О, присвоение 1, проверка на 0.

При этом составление программ в такой системе команд крайне неэффективно.

Эффективность системы команд — степень соответствия системы команд назначению ЭВМ, т. е. классу алгоритмов, для выполнения которых предна­значается ЭВМ, а также требованиям к производительности ЭВМ.

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

Даже про­стые и дешевые современные микропроцессоры поддерживают систему ко­манд, содержащую несколько десятков (а с модификациями — сотен) ко­манд.

Система команд процессора характеризуется тремя аспектами: форматами, способами адресации и системой операций.

Под форматом команды следует понимать длину команды, количество, раз­мер, положение, назначение и способ кодировки ее полей.

Команды, как и любая информация в ЭВМ, кодируются двоичными словами, которые должны содержать в себе следующие виды информации:

□ тип операции, которую следует реализовать в данной команде (КОП);

□ место в памяти, откуда следует взять первый операнд (А1);

□ место в памяти, откуда следует взять второй операнд (А2);

□ место в памяти, куда следует поместить результат (A3).

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

. Форматы команд: а — трехадресный; б — двухадресный; в — одноадресный;

г — безадресный

Команды трехадресного формата занимают много места в памяти, в то же время далеко не всœегда поля адресов используются в командах эффективно. [Действительно, наряду с двухместными операциями (сложение, делœение, Конъюнкция и др.) встречаются и одноместные (инверсия, сдвиг, инкремент др.

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

Более того, нередко встречаются команды, для кото-операнды не определœены (СТОП) или подразумеваются самим кодом раций (DAA, десятичная коррекция аккумулятора).

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

реализации одноадресных форматов (рис. 2.1, в) в процессоре преду-ивают специальную ячейку— аккумулятор.

Первый операнд и резуль-всœегда размещаются в аккумуляторе, а второй операнд адресуется по-А.

ьная система команд обычно имеет команды нескольких форматов, при-тип формата определяется в поле КОП.

12. Способы адресации

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

Не следует думать, что во всœех случаях в поле адреса команды помещается адрес операнда. Существует пять базовых способов адресации операндов в командах.

□ Прямая — в данном случае в адресном поле располагается адрес операнда. Разновидность — прямая регистровая адресация, адресующая не ячейку памяти, а РОН. Поле адреса регистра имеет в команде значительно мень­шую длину, чем поле адреса памяти.

□ Непосредственная — в поле адреса команды располагается не адрес опе­ранда, а сам операнд. Такой способ удобно использовать в командах с константами.

□ Косвенная — в поле адреса команды располагается адрес ячейки памяти, в которой хранится адрес операнда (“адрес адреса”). Такой способ позволяет оперировать адресами как данными, что облегчает организацию циклов, обработку массивов данных и др.

Его основной недостаток — потеря вре­мени на двойное обращение к памяти — сначала за адресом, потом — за операндом. Разновидность — косвенно-регистровая адресация, при кото­рой в поле команды размещается адрес РОН, хранящего адрес операнда.

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

□ Относительная— адрес формируется как сумма двух слагаемых: базы, хранящейся в специальном регистре или в одном из РОН, и смещения, из­влекаемого из поля адреса команды.

Этот способ позволяет сократить длину команды (смещение должна быть укороченным, правда в данном слу­чае не вся память доступна в команде) и/или перемещать адресуемые массивы информации по памяти (изменяя базу). Разновидности— ин­дексная и базово-индексная адресации. Индексная адресация предполага­ет наличие индексного регистра вместо базового.

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

□ Безадресная — поле адреса в команде отсутствует, а адрес операнда или не имеет смысла для данной команды, или подразумевается по умолчанию. Часто безадресные команды подразумевают действия над содержимым аккумулятора. Характерно, что безадресные команды нельзя применить к другим регистрам или ячейкам памяти.

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

При чтении слово извлекается из верхушки, а всœе остальное содержимое “поднимается вверх” подобно па­тронам в магазинœе, так что в верхушке оказывается следующее по порядку слово. Одно слово нельзя прочитать из стека дважды.

При записи новое слово помещается в верхушку стека, а всœе остальное содержимое “опус­кается вниз” на одну позицию. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, слово, помещенное в стек первым, будет прочитано последним. Говорят, что стек поддерживает дисциплину LIFO — Last In First Out (последний пришел — первый ушел).

Реже используется безадресная память типа очередь с дисциплиной FIFO — First In First Out (первый пришел — первый ушел).

  • – Форматы команд

    Взаимодействие функциональных блоков процессора при выполнении команд Работой МП управляет программа, записанная в оперативной памяти ЭВМ. Адрес очередной команды хранится в счетчике команд IP (Instruction Pointer) и в одном из сегментных регистров, чаще всего в CS. Адрес… [читать подробнее].

  • – Форматы команд 32-разрядных ЭВМ

      Усложнение логической организации машин 3-го поколения, наличие большого количества форматов данных, двух типов запоминающих устройств ОП и СОП, использование абсолютной и относительной адресации, одно-, двух- и трехадресных команд явились следствием появления пяти… [читать подробнее].

  • – Команды, форматы команд, система команд

    Команда – полный терм или выражение в исходной программе, определяющее выполняемую операцию, данные и адреса данных, с которыми выполняется данная операция. программА – замкнутая последовательность команд, содержащая полное решение определенной задачи. МП выполняет… [читать подробнее].

  • – Структура и форматы команд процессора

    Формат команды определяет ее структуру, то есть количество двоичных разрядов, отводимых под всю команду, а также количество и расположение отдельных полей команды. Полем называется совокупность двоичных разрядов, кодирующих составную часть команды. Структура команды… [читать подробнее].

  • – Основные группы и форматы команд процессоров платформы С5000.

    Система команд процессора 5402 содержит 203 команды, условно разбитые на 4 группы. Арифметические команды. Группа содержит 79 команд и включает в себя 6 подгрупп: • Команды сложения (13 команд) • Команды вычитания (13 команд) • Команды умножения (10 команд) • Команды умножения… [читать подробнее].

  • Источник: http://referatwork.ru/category/computer/view/105888_formaty_komand

    09. Система команд процессора: индексация и ее назначение. Особенности команд передачи управления и вызова подпрограмм. – GOSy VMKSS

    Система команд – это набор допустимых для данного процессора управляющих кодов и способов адресации данных.

    Система команд жестко связана с конкретным типом процессора, поскольку определяется аппаратной структурой блока дешифрации команд, и обычно не обладает переносимостью на другие типы процессоров (хотя может иметь место совместимость “снизу-вверх” в рамках серии процессоров, как, например, в серии i80x86 ).

    Типовая структура формата команды:

    1.КОП – код операции – двоичный код, однозначно указывающий процессору на выполнение конкретных действий (пересылка, сложение и т.п.), и определяющий при этом форму задания адресов операндов; 1 или 2 байта;

    2.АЧ – адресная часть – двоичное число, которое может представлять собой адрес (адреса) операндов, значение операнда, адрес следующей команды (адрес перехода, передачи управления). 1 до 4 байт.

    Индексная (автоинкрементная и автодекрементная ) адресация. Её назначение.

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

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

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

    Рисунок. Формирование адреса операнда при индексной адресации.

    Три вида индексных операции:

    а) засылка в индексный регистр начального значения

    б) изменение индекса

    в) проверка окончания циклических вычислений.

    Часто в команду с индексной адресацией включают признак, определяющий шаг индексации Т (Т=1,2,4 и т.д.), что позволяет осуществлять адресацию массивов через байт, слово, двойное слово и т.д.

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

    В систему команд традиционно входят такие группы:

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

    ·        арифметические операции (+, –, *, : );

    ·        логические операции (and, or, xor, not) и операции сдвига;

    ·        ввод-вывод – специфические команды для передачи данных между процессором и устройствами ввода-вывода, размещенными в адресном пространстве ввода-вывода;

    ·        передача управления – при выполнении такой команды процессор записывает в счетчик команд PC адрес следующей команды, взятый из адресной части текущей команды;

    ·        специальные – останов, сброс, управление прерываниями, управление режимом пониженного энергопотребления и т.п.

    Основные группы команд МП.

    По характеру операций различают следующие группы команд:

    a)  команда арифметических операций для чисел с ПТ и ФТ.

    b)  команда десятичной арифметики.

    c)   команда логических операций.

    d)  команда передачи кодов.

    e)   команда операций ввода/вывода.

    f)    команда управления порядком исполнения команд (передача управления).

    g)  команда управления режимом работы.

    Рассмотрим  особенности некоторых групп команд.

      Команды передачи управления

    Для  определения  адреса  текущей  команды  МП имеет в своем  составе специальный  регистр указатель адреса  команды  или  счетчик  команд PC, IP.

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

    n команды  перехода

    n  команды  замещения

    n команды  смены  состояния  процессора

    n команды  запроса  прерывания                                                                                                                                                                                                                              

    1.   команды  перехода.

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

        Используются  команды  безусловного  и  условного  переходов.

    1.1 Команды  безусловного  перехода

    Переход может осуществляться и переход  по  косвенному  адресу

    На   косвенную  адресацию  указывает  либо   КОП   ,  либо  специальный  бит  в  поле  команды         

     1.2  Команды  условного  перехода

     Адрес следующей  команды  зависит  от  выполнения  некоторого  условия :

    М-  код признака ( маска  условия )

    Команды  могут  быть с относительной  и косвенной  адресацией.

    Пример :

    МП  8080.

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

    1.3 Команды  вызова  подпрограмм

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

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

    Пример:

    1.4 команды замещения.

    Команда замещения – вместо очередной команды используется замещающая команда, находящаяся по адресу, указанному в команде “выполнить”. Выполнение этой замещающей команды не должно приводить к изменению РС. После исполнения этой команды продолжается естественный ход программы  (это не JMP).

    Команда “выполнение” – аналог подпрограммы, состоящей из одной команды без сохранения адреса возврата. 

    Источник: https://sites.google.com/site/gosyvmkss12/organizacia-evm-i-sistem/09-sistema-komand-processora-indeksacia-i-ee-naznacenie-osobennosti-komand-peredaci-upravlenia-i-vyzova-podprogramm

    Команды процессора. Принцип работы процессора. Система команд процессора

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

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

  1. Человек идет в помещение 2 за порцией данных, необходимых для решения задачи.
  2. Приносит их в помещение 1.
  3. Рабочая группа быстро обрабатывает данные и посылает за следующей порцией информации. При этом она бездействует в ее ожидании.
  4. Человек идете в помещение 2 за следующей порцией информации.
  5. Приносит их в помещение 1.
  6. Рабочая группа быстро обрабатывает данные и посылает за следующей порцией информации. При этом она бездействует в ее ожидании.
  7. И т.д., до тех пор, пока задача не будет решена.

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

Возникают следующие вопросы:

  1. Можно ли поручить решение задачи более «умной» рабочей группе, которая решит ее быстрее?
  2. Можно ли информацию из помещения 2 частично сразу перенести в Помещение 1?
  3. Можно ли посылать за информацией в помещение 2 не одного человека, а нескольких?

Только что, вы смоделировали процесс ускорения работы процессора. Помещение 1 — это процессор, а помещение 2 — это оперативная память. Главная задача ученых и инженеров — сделать процессоры более производительными.

Достигается это за счет:

  • Повышения тактовой частоты (более «умная» рабочая группа). Это самый очевидный путь повышения производительности.
  • Повышения разрядности процессора (поручить приносить информацию из помещения 2 более чем одному человеку). Чем выше разрядность процессора ( количество человек), тем больше байтов (больше информации) он может обработать за один такт.
  • Кэширования памяти. Процессор по отношению, например, к оперативной памяти является более быстрым устройством, поэтому он вынужден постоянно простаивать, ожидая медленно работающую память. Поэтому, чтобы процессор реже обращался к оперативной памяти, внутри него создают небольшой участок памяти размерим 256 или 512 Кбайт. Эта «сверхоперативная» память получила название кэш. В кэш-память процессор записывает те данные, которые получил из оперативной памяти, и если это данные понадобятся еще раз, он возьмет их из кэш. Таким образом, работа процессора происходит  быстрее.

Принцип работы процессора

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

Процессор работает, по сравнению с другими устройствами компьютера,  с наибольшей скоростью. И самыми медленными по сравнению с ним являются внешние устройства, в том числе и человек. Так, например, работая с  клавиатурой, человек отправляет в компьютер в среднем один байт в секунду (нажимает на одну клавишу в секунду). Процессор обрабатывает такую и формацию за 0,000001 секунды.

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

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

Система прерываний процессора

Каким образом, в таком ритме работы, процессор узнает, откуда приходят данные — от клавиатуры или от мыши, от монитора или от принтера?  А может быть от микроволновой печи? И как с такими данными работать?

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

Предположим, мы решили подключить к компьютеру микроволновую печь. Выберем для нее какое-нибудь прерывание, не используемое другим устройством, например «103».

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

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

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

  • Сигналы от клавиатуры он получал бы один раз в десять лет. Обработка слова «компьютер» занимала бы почти 100 лет.
  • Данные от мыши — один раз в год. Перемещение указателя мыши из одного угла экрана в другой заняло бы тысячелетие.
  • Данные, поступившие по телефонным проводам через модем, — один раз в сутки. Прием и обработка одной страницы текста занимали бы 5-7 лет.
  • Данные от гибкого диска — один символ в несколько часов.
  • Данные от жесткого или лазерного диска — один байт в час.

Система команд процессора

Процессор обрабатывает информацию, выполняя определенные команды. Таких команд может быть более тысячи. У каждой команды есть свой код (номер). Например, есть команда 000, 001, 002 и т.д. Коды всех команд процессора записаны в двоичной форме в специальном документе, который называется системой команд процессора.

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

Их родоначальником был процессор Intel 8086, на базе которого был сделан первый IBM PC. Процессоры семейства совместимы «сверху вниз», т.е. новый процессор понимает» все команды своих предшественников, но не наоборот.

Таблица прерываний AMD Atlon 64 X2:

ПрерываниеВидОписание
DMA 02 Исключительный Стандартный контроллер гибких дисков
DMA 04 Исключительный Контроллер прямого доступа к памяти
IRQ 00 Исключительный Высокоточный таймер событий
IRQ 01 Исключительный Стандартная (101/102 клавиши) или клавиатура PS/2 Microsoft Natural
IRQ 03 Общий Ethernet-контроллер
IRQ 04 Общий Прочее устройство моста PCI
IRQ 06 Исключительный Последовательный порт (COM1)
IRQ 08 Исключительный Стандартный контроллер гибких дисков
IRQ 09 Исключительный Высокоточный таймер событий
IRQ 11 Общий Microsoft ACPI-совместимая система
IRQ 13 Общий SM контроллер шины
IRQ 11 Исключительный Процессор числовых данных
IRQ 17 Общий Realtek RTL8139 Family PCI Fast Ethernet NIC
IRQ 17 Общий NVIDIA GeForce 7600 GT
IRQ 18 Общий Стандартный OpenHCD USB хост-контроллер
IRQ 22 Общий Стандартный двухканальный контроллер PCI IDE
IRQ 22 Общий Стандартный расширенный PCI — USB хост-контроллер
IRQ 23 Общий Стандартный двухканальный контроллер PCI IDE
IRQ 23 Общий Стандартный контроллер гибких дисков

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

Все процессоры можно разделить на:

  • Процессоры с расширенной системой команд (CISC — процессоры).
  • Процессоры с сокращенной системой команд (RISC — процессоры).

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

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

Источник: http://more-it.ru/komandy-processora-princip-raboty-processora-sistema-komand-processora/

Система команд центрального процессора

Любая компьютерная программа представляет собой последовательность отдельных команд.

Команда – это описание операции, которую должен выполнить компьютер. Как правило, у команды есть свой двоичный код, исходные данные [операнды] и результат.

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

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

LOD от Load [загрузить] STO от Store [сохранить] ADD от Add [сложить] SUB от Subtract [вычесть] JMP от Jump [перейти] JZ от Jump if zero [перейти если ноль] ROL от Rotate left [сдвинуть циклически влево] ROR от Rotate right [сдвинуть циклически вправо]

HLT от Halt [остановить]

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

Команды передачи данных

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

Для передачи данных между ЦП и основной памятью существуют специальные термины.

Запрос на заполнение регистра содержимым ячейки памяти обычно называют командой загрузки [LOAD], а запрос на передачу содержимого регистра в ячейку основной памяти – командой сохранения [STORE].

Арифметические и логические команды

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

К ним относятся обычные логические операции AND [И], OR [ИЛИ] и XOR [Исключающее ИЛИ]. В основном они используются для манипуляции отдельными битами некоторого регистра; при этом состояние остальных регистров остается неизменным.

Другая группа операций, реализованная в большинстве типов арифметико-логических блоков, состоит из команд, позволяющих перемещать содержимое регистров влево или вправо в пределах самих этих регистров. Такие операции называются операциями сдвига [SHIFT] или вращения [ROTATE], в зависимости от того, что происходит с битами, выходящими при перемещении содержимого регистра за его пределы.

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

Команды управления

Команды управления предназначены для управления ходом выполнения программы, а не обработки каких-либо данных. Данная категория включает много интересных команд, например группа команд перехода [JUMP] или ветвления [BRANCH].

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

К первому варианту относится команда типа “Пропустите все команды до этапа 5”, а ко второму – команда типа “Если полученное число равно 0, то перейдите к этапу 5”.

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

Пример описания системы команд

Рассматриваемая гипотетическая машина имеет регистр команд, регистр адреса и аккумулятор. Длина регистра команд и регистра адреса равна одному байту, а длинна аккумулятора – двум байтам.

Память рассматриваемой машины состоит из 256 ячеек. Длина каждой ячейки равна двум байтам. Адрес любой ячейки памяти может быть представлен восьмибитовыми числами от 00000000 до 11111111 [в шестнадцатеричном представлении от 00 до FF].

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

Код Операнд Мнемоника Описание
001 XX LOD P Загрузка в аккумулятор двоичного кода числа из ячейки памяти с адресом P
002 XX STO P Сохранение двоичного кода числа, хранящегося в аккумуляторе, в ячейке памяти с адресом P
003 XX ADD P Суммирование двоичных кодов чисел, хранящихся в аккумуляторе и ячейке памяти с адресом P, с записью результата в аккумулятор
004 XX SUB P Вычитание двоичного кода числа, хранящегося в ячейке памяти с адресом P, из содержимого аккумулятора с записью результата в аккумулятор
005 XX OR P Выполнение поразрядной операции “ИЛИ” над двоичными кодами чисел, хранящихся в аккумуляторе и ячейке памяти с адресом P, и размещение результата в аккумуляторе
006 XX AND P Выполнение поразрядной операции “И” над двоичными кодами чисел, хранящихся в аккумуляторе и ячейке памяти с адресом P, и размещение результата в аккумуляторе
007 XX XOR P Выполнение поразрядной операции “Исключающее ИЛИ” над двоичными кодами чисел, хранящихся в аккумуляторе и ячейке памяти с адресом P, и размещение результата в аккумуляторе
008 00 ROL Выполнение операции циклического сдвига влево над двоичным кодом числа, хранящегося в аккумуляторе
009 00 ROR Выполнение операции циклического сдвига вправо над двоичным кодом числа, хранящегося в аккумуляторе
00A XX JMP P Выполняется переход к команде, размещенной в ячейке памяти по адресу P
00B XX JZ P Выполняется переход к команде, размещенной в ячейке памяти по адресу P, если двоичный код числа в аккумуляторе равен 0
00C 00 HLT Прекращение выполнения программы

Источник: http://akak-ich.ru/informatika-cp_code.php

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}