Una instrucción de salto es una instrucción del procesador que rompe la secuencia continua de ejecución de instrucciones, forzando la selección y ejecución de instrucciones subsiguientes desde una dirección dada arbitrariamente . Se utiliza para organizar sentencias condicionales, bucles, para comunicarse con subrutinas . La ejecución de una instrucción de bifurcación en los microprocesadores modernos está plagada de pérdidas de rendimiento debido a los tiempos de inactividad de la tubería .
Si el contador de programa está disponible programáticamente como un registro de destino, cualquier instrucción para modificar el contador de programa servirá como instrucción de salto.
Organización del ciclo de retardo en el procesador ARM:
MOV R0 , #0 x10000 retardo: SUBS R0 , R0 , #1 BNE retardoSaltar a una dirección calculada en un procesador ARM:
PC MOV , R0Una rama condicional es un comando a un dispositivo informático programable para cambiar el orden de ejecución del programa de acuerdo con el resultado de verificar una determinada condición.
En la mayoría de los casos, una transición condicional tiene dos etapas: en la primera etapa, se comparan entre sí algunos valores que determinan la condición de transición, en la segunda, se realiza la transición en sí.
La necesidad de un procesamiento correcto de los saltos condicionales deja una huella importante en la lógica de los procesadores segmentados modernos . Los saltos condicionales se pueden hacer de dos maneras. Los saltos condicionales ejecutados cambian el valor del contador de instrucciones del procesador al valor calculado de la dirección de salto. Inejecutable: agregue al valor del contador del programa un número igual a la longitud de la instrucción actual en bytes para proceder a la ejecución de la siguiente instrucción. La determinación incorrecta del tipo de rama condicional puede provocar retrasos significativos en la canalización y, en consecuencia, una gran pérdida en el rendimiento de la computadora .
programa C++ #incluir <iostream> int principal () { ent i ; std :: cout << "Ingrese un número entero" << std :: endl ; estándar :: cin >> i ; std :: cout << "Usted ingresó" ; if ( i >= 0 ) { // Comprobación de la condición // Acciones realizadas si se cumple la condición std :: cout << "positive" ; } más { // Acciones a tomar si la condición no se cumple std :: cout << "negative" ; } std :: cout << "numero" << std :: endl ; devolver 0 ; }