Comandă de salt

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 9 august 2021; verificarea necesită 1 editare .

O instrucțiune de salt  este o instrucțiune de procesor care întrerupe secvența continuă de execuție a instrucțiunii, forțând selectarea și executarea instrucțiunilor ulterioare de la o adresă dată arbitrar . Folosit pentru a organiza instrucțiuni condiționale, bucle, pentru a comunica cu subrutine . Execuția unei instrucțiuni de ramificație în microprocesoarele moderne este plină de pierderi de performanță din cauza timpilor de inactivitate ale conductei .

Dacă contorul de programe este disponibil programatic ca registru de destinație, orice instrucțiune de modificare a contorului de program va servi ca instrucțiune de salt.

Organizarea ciclului de întârziere în procesorul ARM:

MOV R0 , #0 x10000 întârziere: SUBS R0 , R0 , #1 întârziere BNE

Salt la o adresă calculată într-un procesor ARM:

MOV PC , R0

Salt condiționat

O ramură condiționată  este o comandă către un dispozitiv de calcul programabil pentru a schimba ordinea de execuție a programului în conformitate cu rezultatul verificării unei anumite condiții.

Cel mai adesea, o tranziție condiționată are două etape: în prima etapă, unele valori care determină condiția de tranziție sunt comparate între ele, în a doua, tranziția în sine este efectuată.

Necesitatea procesării corecte a salturilor condiționate lasă o amprentă serioasă asupra logicii procesoarelor moderne pipeline . Salturile condiționate se pot face în două moduri. Salturile condiționate executate schimbă valoarea contorului de instrucțiuni al procesorului la valoarea calculată a adresei de salt. Unexecutable - adăugați la valoarea contorului programului un număr egal cu lungimea instrucțiunii curente în octeți pentru a trece la execuția următoarei instrucțiuni. Determinarea incorectă a tipului de ramură condiționată poate duce la întârzieri semnificative în conductă și, în consecință, la o pierdere mare a performanței computerului .

program C++ #include <iostream> int main () { int i ; std :: cout << "Introduceți un număr întreg" << std :: endl ; std :: cin >> i ; std :: cout << "Ai intrat" ​​; if ( i >= 0 ) { // Verificarea condiției // Acțiuni întreprinse dacă condiția este îndeplinită std :: cout << "pozitive" ; } else { // Acțiuni de întreprins dacă condiția nu este îndeplinită std :: cout << "negative" ; } std :: cout << „număr” << std :: endl ; returnează 0 ; }

Vezi și