Відмінності між версіями «Команди переходу»

нема опису редагування
м (робот додав: it:Salto (informatica))
'''КОМАНДИКома́нди ПЕРЕХОДУперехо́ду''' (анг. branch instructions) - — різновид [[команди передачі управління|команд передачі управління]] в [[архітектура системи команд|архітектурах системи команд]] ЕОМ, які змінюють послідовний порядок виконання програми (тобто перезавантажують [[лічильник команд]] адресою, записаною в самій команді переходу, а не збільшуючи його значення на довжину поточної команди).
{{Об'єднати|Команда передачі керування}}
'''КОМАНДИ ПЕРЕХОДУ''' (анг. branch instructions) - різновид [[команди передачі управління|команд передачі управління]] в [[архітектура системи команд|архітектурах системи команд]] ЕОМ, які змінюють послідовний порядок виконання програми (тобто перезавантажують [[лічильник команд]] адресою, записаною в самій команді переходу, а не збільшуючи його значення на довжину поточної команди).
 
Команди переходу можуть бути '''умовними''' (conditional brahch) та '''безумовними''' (unconditional branch).
 
== Команди умовного переходу ==
 
В командах умовного переходу рішення про примусову передачу управління (шляхом перезавантаження [[лічильник команд|лічильника команд]]) або продовження звичайного режиму виконання програми приймається в залежності від виконання або невиконання певної умови.
 
Реалізація команд умовних переходів в різних [[архітектура ЕОМ|архітектурах ЕОМ]] може відрізнятись. В деяких архітектурах обчислення умови для прийняття рішення про подальший перехід та безпосереджньо команда переходу відокремлені.
Як правило, повного перезавантаження адреси лічильника команд не відбувається. Поле адреси переходу у відповідних командах менше розрядності лічильника, тому перезавантажуються лише молодші розряди адреси. Таким чином, діапазон можливих адрес скорочується, але формат команди залишається фіксованим.
 
== Команди безумовного переходу ==
 
+---------+---------------------------------------------+
Умовний перехід примусово перезавантажує лічильник команд адресою (повністю або лише молодшу частину адреси), яка міститься у відповідному полі команди. Діапазон можливих адрес для переходу визначається розрядністю поля команди
 
== Проблеми в конвеєрі ==
 
В [[конвеєр команд|конвеєрі]] при виконанні команди переходу (насамперед умовного) факт того, чи відбудеться перехід, чи ні, стає відомим на пізніх етапах конвеєра. За цей час в конвеєр на ранні етапи завантажуються наступні за цією команди. У випадку, якщо перехід відбувається, то зрозуміло, що потрібно повністю замінити послідовність інструкцій, які слідують за командою переходу. Ці так звані [[конфлікти управління]] призводять до істотного падіння швидкодії процесора. В сучасних процесорах для зниження негативу від цих конфліктів використовують різні методики [[передбачення переходів]] та [[спекулятивне виконання]].
 
'''Кома́нди переда́чі керування'''— у [[Програмування|програмуванні]], команди, що забезпечують перехід від звичного (послідовного, крок за кроком) виконання команди до виконання [[Команда|команди]], на яку вказує команда передачі управління.
==Дивіться також==
 
Команди передачі управління поділяють на:
* ''команди умовного переходу'' ('''if''', '''if else''', '''switch … case''') чи ''умовні оператори'' — зміна способу керування програмою відбувається залежно від [[Істинність умови|істинності]] умови на вході, яка перевіряється;
* ''команди безумовного переходу'' ('''goto''', '''break''', '''continue''', '''return''') чи ''безумовні оператори'' — зміна способу [[керування програмою]] не залежить від умови на вході. Оператори типу goto переводять управління на мітку, оператори типу break, continue, return — для завершеності програмного коду.
 
Залежно від реалізації [[Мова програмування|мови програмування]] ([[Мова програмування високого рівня|високого]] чи [[Мова програмування низького рівня|низького]] рівня), команди передачі управління можуть мати свої особливості. Так, у мовах низького рівня, типу [[асемблер]]а, реалізація команди умовного переходу може мати вигляд '''jz''' (), '''jnz''' () — перехід за нульовою (ненульовою) умовою.
 
== Дивіться також ==
 
* [[Оператор (програмування)|Оператор]] — команда або інструкція в програмуванні.
*[[Умовний перехід]]
* [[Цикл програми]]
* [[Блок (програмування)|Блок]]
* [[Мова програмування]]
* [[Рекурсія]]
* [[Умовний перехід]]
 
[[Категорія:Програмування]]
[[Категорія:Архітектура ЕОМ]]
 
128 014

редагувань