Le origini della parola "ramo" nel codice provengono dal montaggio. Un esempio di questo può essere visto in assemblaggio MIPS . Un ramo è un'istruzione condizionale.
Prima che qualcuno salti su di me per far notare che MIPS ha un'istruzione b
che ha la descrizione di "ramo incondizionatamente" la chiave della differenza tra b
(ramo incondizionatamente) e j
(salto) è quella le istruzioni di ramo funzionano su indirizzi relativi e le istruzioni di salto funzionano su indirizzi assoluti.
C'è anche una certa terminologia del ramo incondizionato nel regno della predizione del ramo. Una CPU con una pipeline proverà a indovinare da che parte va un estratto conto e dove finirà dopo il ramo. È possibile analizzare l'assembly per verificare che un determinato ramo venga sempre eseguito in base a un determinato insieme di condizioni all'inizio della pipeline. Ad esempio, il ramo si basa se il registro 1 è maggiore di 0 o meno. Se il registro 1 è 0 e nessuna istruzione nella pipeline lo modifica, è in sostanza un ramo incondizionato che può essere eseguito in sicurezza (e non doversi preoccupare di svuotare la pipeline dopo esecuzione speculativa o stallo fino a quando il ramo può essere deciso).
Tutto quanto sopra era per codice di livello molto basso. Nel codice di livello superiore (come dimostrato nella domanda) la terminologia di un ramo è dove il codice può seguire due (o più nel caso di un interruttore (pun non inteso)) percorsi diversi. Da wikipedia
A branch is sequence of code in a computer program which is conditionally executed depending on how the flow of control is altered at the branching point.
Il codice incondizionato non viene eseguito condizionatamente e quindi non è un ramo.