El documento habla sobre los saltos condicionales en microprocesadores. Explica que un salto condicional evalúa una condición y salta a otra parte del programa solo si se cumple la condición. Da ejemplos de instrucciones de salto condicional como jl y jg que saltan si un valor es menor o mayor que otro. También presenta un programa en ensamblador que calcula una expresión usando saltos condicionales para comparar y saltar valores.
2. Saltocondicional
Un salto es una interrupción del flujo normal de las
instrucciones, haciendo que el procesador continúe en otro
punto del programa ("salta" a otra parte del programa).
Un salto condicional es una instrucción (más bien una familia
de instrucciones) que realiza el salto si se cumple
una condición determinada con anterioridad. El problema es
que el procesador no sabe si se realizará el salto o no hasta
que se evalúa la condición y si esto ocurre en la mitad del
pipeline, es posible que tenga que borrar el pipeline y
comenzar de nuevo en el nuevo punto de ejecución, perdiendo
tiempo y trabajo.
6. EJEMPLOS
Ejemplo de salto incondicional directo:
addl %eax, %ebx
jmp etiq1 # salto incondicional a etiq1
subl %edx, %ebx
etiq1: addl %edx, %ebx
En este caso la tercera instrucción no se ejecuta ya que al
ejecutarse el salto el programa pasa a ejecutar la instrucción
4.
7. movl valor1, %eax # %eax=valor1
movl valor2, %ebx # %ebx=valor2
cmpl %ebx, %eax # compara valor1
con valor2
jl menor # si valor1 < valor2 salta a
etiq1
subl $5,%eax # si valor1 >= valor2
resta 5 a %eax
jmp fin # salta a fin
menor: addl $5,%eax # si valor1 <
valor2 suma 5 a %eax
fin:
8. Programa que calcula la expresión x=(a+(b-c))/(c*d) dados los
valores a=4, b=5, c=2, d=7 declarados en la sección de datos
# Programa que calcula x=(a+(b-c))/(c*d)
.section .data
a: .long 4
b: .long 5
c: .long 2
d: .long 7
x: .long 0
.section .text
.globl _start
_start:
movl b, %eax # %eax=b
subl c, %eax # %eax=b-c
addl a, %eax # %eax=(b-c)+a
movl c, %ecx # %ecx=c
imull d, %ecx # %ecx=c*d
cltd # %edx=0
idivl %ecx # %eax=((b-c)+a)/(c*d)
%edx=resto
movl %eax, x # guarda el resultado en x
movl $1, %eax # fin del programa
movl $0, %ebx
9. Identificar el conjunto de instrucciones que implementan
la estructura de salto condicional
Para facilitar la programación, el lenguaje ensamblador
del MIPS aporta un conjunto de pseudoinstrucciones de
salto condicional que permiten comparar dos variables
almacenadas en registros (a nivel de mayor, mayor o
igual, menor, menor o igual) y según el resultado de esa
comparación saltan o no, a la instrucción referenciada a
través de la etiqueta.
CONCLUSION