2010-05-12 19 views
8

Estoy viendo un ensamblaje para la puesta en marcha de algunos firmware que se ejecuta en un procesador ARM. La siguiente tabla de excepciones de vectores se define: ""ARM Assembly - Branch Instruction

LDR  pc, =resetHandler 
    LDR  pc, Undefined_Addr 
    LDR  pc, SWI_Addr 
    LDR  pc, Prefetch_Addr 
    LDR  pc, Abort_Addr 
    B  . 
    LDR  pc, =irqHandler 
    LDR  pc, FIQ_Addr 

¿Alguien sabe cuál es el después de la instrucción de ramificación ("B")? En la ventana de desensamblaje del depurador, la instrucción se ramifica a sí misma. De acuerdo con la hoja de datos, la entrada está reservada, así que supongo que esto hace un ciclo sin fin y espera a que se restablezca el perro guardián.

+2

Así como un FYI, algunos microprocesadores basados ​​en ARM (o más bien sus utilidades de flash y/o gestores de arranque) utilizan esa entrada reservada para sostener una suma de comprobación: http://www.nxp.com/documents/application_note/AN10254.pdf –

Respuesta

8

En muchos ensambladores . significa el contador de ubicación actual, por lo que sí, es simplemente un bucle infinito, es decir, "bifurcar aquí".

[Tenga en cuenta que algunos ensambladores usan $ o * en lugar de .]