Un salto (o diramazione in alcune architetture di microprocessori, come il PDP-8 e l'Intel x86) è un punto nel quale in un processo viene alterato il sequenziale flusso delle istruzioni.
Descrizione
[modifica | modifica wikitesto]Il termine salto viene comunemente utilizzato nei linguaggi a basso livello come l'assembly; nei linguaggi ad alto livello i salti sono spesso sostituiti da costrutti di selezione (ad esempio, nei linguaggi c-like sono rappresentabili con degli if
e if-else
), che svolgono logicamente la stessa funzione per cui il salto è stato creato nella programmazione a livello macchina. Un esempio di salto nei linguaggi di programmazione è l'istruzione goto (lett. "vai a").
Una istruzione che causa un salto, detta istruzione di salto, può essere svolta o non svolta: se il salto non viene effettuato, il normale flusso sequenziale delle istruzioni non viene cambiato e l'istruzione seguente da caricare nella coda di prefetch è quella immediatamente dopo l'istruzione di salto. Se il salto viene eseguito, l'istruzione caricata si trova in una area di memoria indicata esplicitamente o non esplicitamente nell'istruzione di salto. Esistono due tipi di istruzioni di salto: il salto condizionato che può essere eseguito o non eseguito, ed il salto incondizionato, che viene sempre eseguito.
I salti incondizionati sono deprecati nella programmazione con linguaggi ad alto livello: risulta difficile modificare l'algoritmo per apportare degli aggiornamenti e rende difficile la comprensione del codice ad altri utenti.
Per migliorare le prestazioni del microprocessore, tentando di eliminare la dipendenza dai controlli, si cerca di ottenere un perfetto pipeline grazie alla tabella storica dei salti (Branch Target Buffer o BTB), prima di essa i microprocessori tentavano di ottenere lo stesso risultato grazie ad una doppia coda di prefetch.
Esempi
[modifica | modifica wikitesto]Un salto incondizionato nel linguaggio assembly di Intel:
jmp 0x00100000
Un salto condizionato nel linguaggio assembly di Intel:
jz 0x00100000
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- salto condizionato, in Enciclopedia della Matematica, Istituto dell'Enciclopedia Italiana, 2013.
- (EN) branching programming / branch instruction, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
- (EN) Denis Howe, jump, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL