Je pense à cette question pour un temps: quand est-ce qu'un processeur ARM7 (avec 3 pipelines) augmente son registre de PC.Quand un processeur ARM7 augmente-t-il son registre PC?
Je pensais initialement qu'après l'exécution d'une instruction, le processeur vérifie d'abord s'il y a une exception dans la dernière exécution, puis augmente PC de 2 ou 4 en fonction de l'état actuel. Si une exception se produit, ARM7 changera son mode de fonctionnement, stockera le PC dans le LR du mode actuel et commencera à traiter l'exception actuelle sans modifier le registre du PC.
Mais cela n'a aucun sens lors de l'analyse des instructions de retour. Je ne peux pas déterminer pourquoi PC sera assigné LR en revenant d'une exception d'instruction non définie alors que LR-4 de prefetch-abort-exception, ces deux exceptions ne se sont pas produites à l'état de décodage? De plus, selon mon manuel, PC sera toujours assigné LR-4 en revenant de prefetch-abort-exception quel que soit l'état du processeur (ARM ou Thumb) avant que l'exception ne se produise. Cependant, je pense que PC devrait être assigné LR-2 si l'état original est Thumb, car une instruction Thumb est longue de 2 octets au lieu de 4 octets qu'une instruction ARM contient, et nous voulons simplement annuler une instruction dans l'état actuel . Y at-il des défauts dans mon raisonnement ou quelque chose de mal avec le manuel.
Cela semble une longue question. J'espère vraiment que n'importe qui peut m'aider à obtenir la bonne réponse.
Merci d'avance.
Excellente réponse. –