2016-05-04 4 views
0

Ich benutze Marmalde und C/C++, um ein Spiel für Android zu schreiben. Jetzt möchte ich einige wichtige Teile in Assembler schreiben, um die Leistung zu verbessern. Aber ich frage mich, ob diese App auf den meisten Android-Geräten laufen könnte? (etwa 90%) Da im Allgemeinen Assembler-Code vom Prozessor abhängt und verschiedene Android-Telefone möglicherweise verschiedene Prozessoren haben, zum Beispiel Intel oder ARM, so müsste ich diese Teile in verschiedenen Assembler-Sprachen für jeden anderen Prozessor schreiben !?Schreiben Android App Teile in Assembly

+1

In den meisten Fällen können Menschen nicht besser asm als der Compiler/Optimierer schreiben. Also solltest du dich generell davon fernhalten, asm selbst zu schreiben. Sie werden wahrscheinlich schlechteren Code und mehr Probleme produzieren, als wenn Sie es einfach den Tools überlassen. (Achtung: Egos kann stören). –

+2

Fehlgeleitet Versuch. Sie werden nicht besser ASM als Compiler schreiben. – SergeyA

+0

** Wahrscheinlich ** fehlgeleitet. Sie können einen Compiler für sehr spezifische Code-Teile schlagen (Audio-Mixing und Filter kommen Ihnen in den Sinn), aber insgesamt ist es das nicht wert. –

Antwort

2

Ja, natürlich müssen Sie den Assemblercode für jeden Prozessor ABI schreiben.

Das Android NDK hat specific support for different ABIs.

Denken Sie daran, dass derzeit zwar nur drei Prozessorfamilien unterstützt werden (Intel x86/64, ARM und MIPS), Sie jedoch alle anderen ABIs und nicht die Prozessorenfamilien selbst anvisieren müssen.

Sie können MIPS-Geräte sicher fallen lassen, sie sind sehr selten.
Intel-Geräte sind meist Tablet, aber es gibt auch ein Handy.
Die überwiegende Mehrheit der Geräte gibt es ARM.

Wenn Sie bei einer offiziellen optimization guide from ARM v8 sehen oder zu einem sehr nützlichen optimization guide for Intel können Sie sehen, dass es tatsächlich einige Zeit dauern, guten Assembler-Code schreiben, dann ist es nicht nur darum, etwas Arbeit zu machen (die Sie bereits in der Lage sein sollten, mach es leicht).

Hint
schreiben zuerst die kritischen Teile in C++, dann schauen Sie bei der Demontage und sehen, ob Sie besser machen können oder wenn Sie einige suboptimale Muster erkennen kann.
Nur dann den Code in der Baugruppe neu schreiben.

Versuchen Sie auch, bevor Sie solche Mikrooptimierungen durchführen, bessere Datenstrukturen, bessere Algorithmen und besseres Ressourcenhandling zu verwenden.

+1

Die letzte Aussage ist absolut richtig und fasst alles zusammen! – t0mm13b

Verwandte Themen