2013-05-15 3 views
2

Je sais que LOCAL_CFLAGS est un ensemble facultatif d'indicateurs de compilation qui seront transmis lors de la création de fichiers source C. Ma question est de savoir ce que ces drapeaux signifient "-mno-thumb" ou où puis-je trouver une liste des LOCAL_CFLAGS disponibles et leurs menings.Que signifie LOCAL_CFLAGS -mno-thumb?

Merci d'avance !!

Répondre

4

Les options LOCAL_CFLAGS sont, dans un fichier Android.mk, l'équivalent de CFLAGS habituellement utilisé avec le compilateur pour spécifier les options de compilation.

Il ya tonnes de telles options, la documentation pour la plupart d'entre eux peuvent être trouvés par exemple dans les différents liens sur this page from the GCC documentation. En ce qui concerne l'option -mno-thumb, elle désactive le jeu d'instructions optionnel Thumb disponible sur la plupart des processeurs ARM (récents). Ce jeu d'instructions est un jeu d'instructions plus lent que les instructions ARM habituelles, donc le désactiver en utilisant ce drapeau assure une compatibilité avec plus de processeurs (principalement les plus anciens), mais vous coûtera probablement plus de performances. en contrepartie.

1

mbrenon a raison de presque tout ce qu'il a écrit. Toutefois, le jeu d'instructions THUMB est plus lent que les instructions ARM définies. Cela prend moins de place mais c'est plus lent.

Comment est-ce. Chaque instruction de pouce occupe la moitié de l'espace par rapport à l'instruction d'armement. Ceci limite les options disponibles pour chaque instruction, par ex. paramètres, modes d'adressage, etc. Il en résulte plus d'instructions nécessaires pour effectuer le même travail et chaque instruction nécessite un cycle d'exécution d'où le ralentissement. On estime que le programme en mode ARM est 30-40% plus rapide mais le programme en mode THUMB prend 30 à 40% moins d'espace. Thumb a été inventé pour les systèmes à mémoire limitée.

Le mode Thumb affecte également la puissance de la mémoire externe.

Bien qu'il y ait plus d'instructions qui doivent être exécutées dans la plupart des cas, deux instructions peuvent être récupérées en un cycle. C'est ma compréhension de la question. Je ne suis pas sûr à 100% si c'est une réponse complète.