русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Команды переходов

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

Команды перехода могут быть условными (conditional brahch) и безусловными (unconditional branch).

В зависимости от реализации языка программирования ( высокого или низкого уровня), команды передачи управления могут иметь свои особенности. Так, в языках низкого уровня, типа ассемблера, реализация команды условного перехода может иметь вид jz (), jnz () - переход по нулевой (ненулевой) условием.

 

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

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

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

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

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

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

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

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

 

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

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

 

Проблемы в конвейере

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

 

Просмотров: 18749

Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.