Je n'ai pas trouvé de réponse à cette question. Pouvez-vous me dire quand l'architecture ARM passe du mode bras au mode pouce? Expliquer toutes les façons dont la commutation fonctionne.Toutes les façons de passer du mode bras au mode pouce dans l'architecture ARM les listent et expliquent en détail?
Répondre
Les réponses se trouvent dans ARM ARM (ARM Architectural Reference Manual). Regardez BX à la fois dans les instructions ARM et les instructions Thumb, par exemple. Il y a plus d'instructions au cas où c'est une question de devoirs.
Regardez aussi le code de pseudo pour ce qui se passe lorsqu'une exception se produit:
R14_ = return link SPSR_ = CPSR CPSR[4:0] = exception mode number CPSR[5] = 0 if == Reset or FIQ then CPSR[6] = 1 CPSR[7] = 1 if != UNDEF or SWI then CPSR[8] = 1 CPSR[9] = CP15_reg1_EEbit PC = exception vector address
Les commentaires pour le pseudo-code ci-dessus (dans le bras ARM) décrivent une autre réponse à votre question.
Maintenant, ce qui n'est pas évident, et peut-être trompeur dans les descriptions d'instructions BX et autres est que bx rm ne change pas toujours d'état. La description du pouce BX indique "branches entre le code ARM et le code du pouce". Comme si le pouce l'utilisant vous amènerait à armer le code tout le temps. Le pseudo code peint une image un peu meilleure cependant, l'adresse de l'adresse dans le registre vous indique si vous vous branchez sur le pouce ou le bras. Le pseudo code PC dans la description du pouce est cependant trompeur. Les instructions Thumb sont 16 bits et le pc avance 16 bits à la fois 0x00, 0x02, 0x04, etc. En mode arm, les instructions sont 32 bits et le pc va 0x00, 0x04, 0x08, etc. (regardez les instructions de branchement ARM la branche est signed_immed < < 2, 0,4,8, etc. branche pouce est signed_immed < < 1, 0,2,4,6, etc.)
Fondamentalement, si vous avez un programme en mode mixte que vous souhaitez utiliser BX au lieu de B, en particulier lors du retour de bx lr au lieu de mov pc, lr. Donc les fonctions du pouce et du bras utiliseraient bx lr pour retourner. Les quatre cas sont couverts, le bras qui appelle le bras, le pouce qui appelle le bras, le bras qui appelle le pouce et le pouce qui appelle le pouce. Donc, cherchez des instructions qui affectent le bit T du cpsr et/ou affectent le compteur de programme d'une manière qui amène le compteur de programme à se brancher quelque part. Veillez également à vous limiter à la famille ou au noyau spécifique qui vous intéresse (lors de la lecture du bras ARM), armv4t, armv6, armv6, etc. Vous voudrez probablement obtenir le TRM (Technical Reference Manual) pour le noyau spécifique que vous êtes en utilisant aussi bien. Le ARM ARM est très générique et, à mesure que le nombre de cœurs augmente avec le temps, les différences spécifiques ne sont pas claires dans le ARM ARM. Vous avez besoin du TRM.
J'ai beaucoup de révolutions du ARM ARM et tous contiennent des bugs/erreurs. Intentionnel ou non, je ne sais pas, donc un peu de piratage est toujours nécessaire pour savoir comment le noyau que vous utilisez fonctionne vraiment.
J'aurais pu écrire cette réponse mieux, je l'ai fait trop difficile à lire. Quoi qu'il en soit, réponse courte: recherchez les instructions qui affectent le bit T dans le CPSR. –
- 1. Comment passer d'une base de données Access au mode partagé et au mode exclusif?
- 2. Comment passer de iostream du mode binaire au mode texte et vice versa?
- 3. Copier du mode de recherche au mode ex
- 4. Comment puis-je passer au mode "SMS" du clavier Android
- 5. Comment faire pivoter du mode portrait au mode paysage?
- 6. Pourquoi viewWillDisAppear n'est pas appelé en mode détail?
- 7. Distinguer le mode de développement et les paramètres d'environnement du mode de publication sur Android
- 8. Accéder au StackTrace lors du déploiement en mode Release
- 9. Cause l'iPhone pour passer en mode veille
- 10. comment passer à l'emplacement en mode graphique
- 11. Activation du mode linum en mode python/c
- 12. ensemble de bras: '#define' risque
- 13. Comment accéder à la SRAM haute vitesse dans les CPU ARM à partir du code en mode utilisateur sur WinCE?
- 14. Mode vi de Readline en mode vim ex
- 15. C#: Forcer les moniteurs en mode veille
- 16. commutation entre le mode console et le mode graphique
- 17. Comment lire les données du fichier (.dat) en mode ajout
- 18. Le moyen le plus rapide de passer le contenu d'un fichier du noyau au mode utilisateur?
- 19. Mode vipère dans tous les modes
- 20. UITableView: Vérifier les lignes en mode édition
- 21. Insérer des lignes vides sans passer en mode insertion
- 22. Compteur d'horodatage (TSC) lors du passage du mode noyau au mode utilisateur
- 23. Pourquoi les événements de saisie au clavier ne se produisent-ils pas en mode plein écran?
- 24. GWT rafraîchir le mode en mode développement
- 25. Afficher les images en mode portrait et paysage
- 26. Obliger les utilisateurs intranet pour afficher page Web en mode IE8, pas en mode de compatibilité
- 27. Regroupement en mode hibernation
- 28. Collage en mode commande ou en mode recherche (/) dans vim
- 29. Comment appeler/hooker les API du mode noyau depuis le mode utilisateur?
- 30. En v6, comment ai-je les fichiers d'affichage de la boîte de dialogue d'ouverture de fichier en mode détail?
Pourquoi avez-vous besoin de savoir? –
Est-ce que ce sont les devoirs? En outre, dans les deux lignes que vous avez écrites, il y a environ 15 erreurs orthographiques et grammaticales. Si vous attendez des gens ici pour "expliquer en détail", au moins mis en avant un petit effort. – Dan
Ça aurait pu être une question de devoirs. Mais une question intéressante néanmoins. – viv