Android NDK - il prend en charge le code de bras droit ou tout simplement Pouce

StackOverflow https://stackoverflow.com/questions/2380152

  •  24-09-2019
  •  | 
  •  

Question

On m'a demandé d'évaluer la plate-forme Android pour notre produit et je regarde les différentes options, je ne fais que gratter la surface tout à l'heure et la seule chose qui me tracasse est que je ne vois pas comment compiler le code comme code bras droit (pas de pouce), je sais que le pouce est plus lent et nous aurons besoin de la performance dans les sections clés de notre code.

pense il devrait simplement être définissant l'indicateur -march dans le LOCAL_CFLAGS du fichier Android.mk, mais je ne peux pas obtenir que de travailler ...

Quelqu'un peut-il aider?

Était-ce utile?

La solution

Spécification du drapeau suivant pour un module Android.mk va compiler le code ARM droite.

LOCAL_ARM_MODE := arm

L'activation de l'optimisation peut aussi aider à:

LOCAL_CFLAGS := -O3

Autres conseils

Vous pouvez construire dans le bras, le pouce, ou un mélange des deux.

Dans le makefile, dans LOCAL_SRC_FILES, où vous la liste MyFile.c, spécifiez MyFile.c.arm (ne renommez pas le fichier sur le disque, il suffit de faire dans la liste des fichiers source). Cette convention est utilisée dans Android pour le code qui est des performances critiques (ou juste besoin d'être ARM pour une raison quelconque).

Les notes habituelles s'appliquent, bien sûr: le code du pouce a tendance à exiger plus d'instructions pour accomplir quelque chose, mais chaque instruction est la moitié de la taille, de sorte que le code est généralement un peu plus lent, mais aussi un peu juste plus petit. Dans certaines situations, la plus petite taille permet un meilleur ajustement avec les (minuscules) caches dans les CPU ARM, et pourrait même être plus rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top