Introducción a los tres registros de SP, LR y PC en ARM

inserte la descripción de la imagen aquí

Puntero de pila R13 (SP)

Puntero de pila MSP
Puntero de pila PSP

Registro de enlace R14 (LR)

1". Llamada de función

Cuando se utiliza bl o blx para saltar a una subrutina, r14 guarda la dirección del remitente, que se puede restaurar al final del procedimiento de llamada.
Cuando se utiliza BL o BLX, la instrucción de salto coloca automáticamente la dirección de retorno en r14; la subrutina regresa copiando r14 a la PC, generalmente con una de las siguientes instrucciones: MOV PC, LR
BX
LR

通常子程序这样写,保证了子程序中还可以调用子程序。
                     stmfd sp!, {lr}
                     ……
                     ldmfd sp!, {pc}

2". Interrupción

Cuando ocurre una excepción, el R14 físico específico del modo de excepción se establece en la dirección a la que regresará el modo de excepción.

1. Llega la interrupción

El valor en el registro se guardará a su vez, lo que el hardware completa automáticamente
inserte la descripción de la imagen aquí

2. Llame al controlador de interrupciones

3. Interrumpir el regreso

inserte la descripción de la imagen aquí
Verifique el valor de LR, si LR=0xffff fff1
? ? ? ?
Verifique el valor de LR. Si LR = 0xffff fff9,
significa que antes de ingresar a la interrupción, se usa la pila MSP, porque el valor del registro se guardará en secuencia antes de ingresar a la interrupción. Todos R0, R1, R2, R3 , R12, LR se puede encontrar a través del puntero MSP. Dirección de retorno, PSR
verifica el valor de LR. Si LR = 0xffff fffD,
significa que antes de ingresar la interrupción, se usa la pila de PSP, porque el valor del registro será guardado en secuencia antes de ingresar la interrupción. Todo se puede encontrar a través del puntero de PSP R0, R1, R2, R3, R12, LR, dirección de retorno, PSR.

Contador de programa R15 (PC)

Supongo que te gusta

Origin blog.csdn.net/m0_37187962/article/details/123345689
Recomendado
Clasificación