2016-05-04 9 views
0

私はMarmaldeとC/C++を使用してAndroid用のゲームを作成しています。 パフォーマンスを向上させるために、アセンブラで重要な部分を書きます。 しかし、私はこのアプリが最もAndroid搭載端末で動作するかどうかは不思議です。 (約90%) 一般的に、アセンブラコードはプロセッサに依存し、異なるアンドロイド携帯は異なるプロセッサ、例えばIntelまたはARMを持つことがあるので、これらの部分を異なるプロセッサごとに異なるアセンブラ言語で記述しなければならないでしょう!アセンブリ内のAndroidアプリケーション部品の作成

+1

ほとんどの場合、人間はコンパイラ/オプティマイザよりも優れたasmを書くことはできません。ですから、一般的には自分で自分自身を書くことから離れてください。あなたはツールに残しておくよりも、コードが悪くなり、問題が多くなる可能性があります。 (警告:Egosが干渉する可能性があります)。 –

+2

試行錯誤しました。あなたはコンパイラよりも優れたASMを書くつもりはありません。 – SergeyA

+0

**おそらく**間違っています。非常に特殊なコード(オーディオミキシングやフィルターが気になる)のためにコンパイラーを打ち負かすことができますが、一般的にはそれは価値がありません。 –

答えて

2

はい、もちろん、プロセッサ ABIごとにアセンブリコードを書く必要があります。

Android NDKにはspecific support for different ABIsがあります。

現在のところ、Intel x86/64、ARMおよびMIPSの3つのプロセッサフ​​ァミリしかサポートされていませんが、プロセッサはファミリではなく、すべての異なるABIをターゲットにする必要があります。

MIPSデバイスは安全に削除できますが、これはまれです。
Intelデバイスはほとんどがタブレットですが、携帯電話もあります。
ARMには、大多数のデバイスがあります。あなたは既ににできるはずです

あなたは公式optimization guide from ARM v8見たりoptimization guide for Intel非常に便利で、あなたははそれが実際に良いアセンブリコードを書くには時間がかかりますが、それは何かの仕事をすることについてだけではないことを確認できる場合(簡単に)。

ヒント
はその後解体を見て、あなたはもっとうまくできるかどうか、あなたには、いくつかのサブ最適なパターンを認識することができるかどうか、最初のC++での重要な部分を書きます。
アセンブリ内のコードのみを書き換えます。

また、このようなマイクロ最適化を行う前に、より良いデータ構造、より良いアルゴリズム、およびより良いリソース処理を使用してください。

+1

最後の文は絶対的なものであり、それをすべて集計します! – t0mm13b

関連する問題