es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la diferencia entre “ldr pc, _boot” y “b _boot”?

Estaba examinando una tabla de vectores para el ARM Cortex A9 y me encontré con dos tipos de instrucciones:

B _boot

y

LDR PC, _boot

Alguien puede explicarme la diferencia entre usar B o LDR? Ambos códigos deberían hacer lo mismo, pero aparentemente debe haber una diferencia. Tiene que ver algo con el registro de enlace?

¡Gracias por tu tiempo!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Diferencia entre B y LDR

    En ARM Cortex A9, B y LDR son dos tipos diferentes de instrucciones utilizadas para saltar a una parte diferente del código.

    B

    B es una instrucción que realiza una rama incondicional a una ubicación especificada. En el caso de la tabla de vectores, salta a la dirección de “boot”. Cuando se utiliza B, el contador de programa (PC) se altera a la dirección especificada en la instrucción.

    LDR

    LDR es una instrucción de carga utilizada para cargar datos de la memoria en un registro. En el caso de la tabla de vectores, carga la dirección de “boot” en el contador de programa (PC). Esto se conoce comúnmente como una rama indirecta o una rama a través de un registro.

    Registro de enlace

    El registro de enlace (LR) es un registro utilizado para almacenar la dirección de retorno de una llamada a función. En el caso de una instrucción de rama, el PC se altera y no se utiliza el LR. Sin embargo, en el caso de LDR, se utiliza el LR para almacenar la dirección de retorno para que el programa pueda regresar a la ubicación correcta después de la rama.

    En general, tanto B como LDR pueden utilizarse para lograr el mismo resultado en algunos casos, pero existen diferencias en cómo alteran el PC y utilizan el LR.

Comments are closed.