2010-05-12 6 views
8

Je regarde un assemblage pour le démarrage de certains microprogrammes fonctionnant sur un processeur ARM. La table de vecteurs d'exception suivante est définie:ARM Assembly - Instructions de branchement

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 

Est-ce que quelqu'un sait ce que le "." après l'instruction de la branche ("B") fait? Dans la fenêtre de désassemblage du débogueur, l'instruction se branche sur elle-même. Selon la fiche technique, l'entrée est réservée, donc je suppose que cela fait juste une boucle sans fin et attend une réinitialisation du chien de garde.

+2

Tout comme un FYI, certains microprocesseurs à base d'ARM (ou plutôt leurs utilites flash et/ou bootloader) utilisent cette entrée réservée pour tenir une somme de contrôle: http://www.nxp.com/documents/application_note/AN10254.pdf –

Répondre

8

Dans de nombreux assembleurs . signifie le compteur d'emplacement actuel, donc oui, c'est juste une boucle infinie, c'est-à-dire "branchez ici".

[Notez que certains assembleurs utilisent $ ou * plutôt que .]