問題タブ [thumb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8391 参照

iphone - iPhone 3GSでのARMとThumbのパフォーマンス、非浮動小数点コード

私は誰かがiPhone3GSでのARM対Thumbコードのパフォーマンスについて何か難しい数字を持っているのだろうかと思っていました。特に非浮動小数点(VFPまたはNEON)コードの場合-Thumbモードでの浮動小数点のパフォーマンスの問題を認識しています。

より大きなARM命令の余分なコードサイズがパフォーマンスの危険になるポイントはありますか?言い換えると、実行可能コードが使用可能なメモリと比較して比較的小さい場合、Thumbモードをオンにすることで測定されたパフォーマンスの違いはありますか?

私が尋ねる理由は、「-marm」オプションを使用してXcodeのNEON固有のソースファイルに対してARMを有効にできますが、GCCがx86をビルドしているため、これによりシミュレーターのビルドが中断されるためです。「親指でコンパイル」をオフにして、それで済ませるべきかどうか疑問に思いました。

0 投票する
4 に答える
7821 参照

iphone - 親指用のiPhoneコンパイル

パフォーマンスを向上させるために、iPhone ターゲットの設定で「親指用コンパイル」をオフにすることをお勧めします。ただし、この設定を見つけるのに苦労しています。現在のプロジェクトでそれを見つけることができなかったので、新しいものを作成し (見つけて設定できる場所)、それにファイルをコピーすることにしました (同時に使用しているすべてのライブラリも更新します)。 )。

しかし今、この設定はこの新しいプロジェクトからも消えたようです. どの SDK を選択しても、シミュレーターでもデバイスでも、設定はターゲット設定に表示されません! ただし、突然「ユーザー定義」カテゴリの下に GCC_THUMB_SUPPORT という変数がまだあるようです。これは何ですか?

新しいターゲットを作成しようとしましたが、その設定も表示されません (GCC_THUMB_SUPPORT でさえ)。

0 投票する
1 に答える
930 参照

c++ - iPhone 親指 & VFP

「Thumb 用にコンパイル」と VFP コードは互いにどのように関連していますか?

iPhone 2G/3G では、Thumb 命令セットに浮動小数点計算が含まれていないことを私は知っています (3GS では、Thumb2 には明らかに..)。では、thumb 用にコンパイルし、浮動小数点計算に VFP コードを使用するとどうなるでしょうか?

私はそれがかなり詳細であることを知っています-しかし、おそらく誰かがここで知っています... c

0 投票する
1 に答える
213 参照

iphone - iPhone: 単一ソースファイルの Thumbmode を無効にする

GCC 4.2 を使用した Xcode

このファイルの「追加のコンパイラ フラグ」リストに -mthumb コンパイラ フラグを追加することで、プロジェクト全体のサムモードを無効にし、単一のソース ファイルに対して有効にすることができるようです。

私は反対の方法を探しています。プロジェクト全体で Thumb をアクティブ化しますが、特定のファイルでは非アクティブ化します。

問題は、一般に、Thumb 用にコンパイルすると、プロジェクトのパフォーマンスが向上することです。ただし、私が使用しているエンジンの更新バージョンには、Thumb が非アクティブ化されている場合にのみコンパイルされる VFP アセンブラー コードが含まれています。したがって、これらの特定のファイルに対してのみ Thumb を非アクティブ化し、それ以外のすべてに対してアクティブ化したいと考えています。

ありがとう!

0 投票する
3 に答える
2317 参照

compilation - ARM Thumb モード: コード サイズが減少しない

皆さん、ARM Cortex-A8 プロセッサ用にコンパイルしたプロジェクトがあります。これを行うためにGCCを利用しています。現在、実行可能ファイルのサイズは 220.1 KB です。ここで、makefile を変更し、フラグを追加し-mthumbます。makefile の行は次のようになります。

すべてのメイクファイルでこの変更を行い、プロジェクトをビルドしましたが、最終的に取得した実行可能ファイルは依然として 220.1 KB のままです。

コマンドラインにもう1つ変更を加え、 -mthumb-interwork オプションを追加しました

もう一度、同じサイズの 220.1 KB の実行可能ファイルを取得します。これをしている間、私は何かを見逃していますか?

2 つの数値の最小値を見つける小さなプログラムを作成し、次のコマンド ラインを使用してコンパイルしました。

8.5 KB の実行可能ファイルを取得します

次に、私は

まだ 8.5 KB の実行可能ファイルを取得しています。

ここで何が問題なのですか?

cat /proc/cpuinfo親指がプロセッサで本当にサポートされているかどうかを確認したところ、実際にサポートされていることがわかりました。わかった -

0 投票する
1 に答える
6509 参照

arm - ARMアーキテクチャでアームモードからサムモードに切り替えることができるすべての方法は、それらをリストし、詳細に説明していますか?

この質問に対する答えは見つかりませんでした。ARMアーキテクチャがアームモードからサムモードに切り替わるタイミングを教えてください。切り替えが機能するすべての方法を説明します。

0 投票する
1 に答える
1636 参照

gcc - これはGCCのバグですか、それとも私のコードは間違っていますか?

私はこのCコードを持っています:

これは、AndroidNDKr4bを使用して-Os-mthumbを使用して次のサムコードにコンパイルされます。

しかし、最新のAndroid NDK r5では、次の壊れたコードにコンパイルされます。

これは...奇妙に思えます。anim_colが0未満の場合、-15以下の場合に-2を返すだけでなく、-2を返します。これを再現するための完全なコマンドラインは次のとおりです。

android-ndk-r4b / build / prebuilt / linux-x86 / arm-eabi-4.4.0 / bin / arm-eabi-gcc -c -o test.o -Os test.c --save-temps -mthumb

android-ndk-r5 / toolchains / arm-linux-androideabi-4.4.3 / prebuilt / linux-x86 / bin / arm-linux-androideabi-gcc -c -o test.o -Os test.c --save-temps -mthumb

これは既知のGCCバグですか?信じがたいことですが、それは現実には起こりません。確かに私のコードは間違っていますか?!

0 投票する
1 に答える
457 参照

ios - iPhone SDK 用のサードパーティの静的ライブラリが Thumb 用にコンパイルされているかどうかを確認するにはどうすればよいですか?

Apple リンカのバグにより、Thumb 用にコンパイルされたサードパーティ ライブラリをリンクできない開発プラットフォーム (モノタッチ) を使用しています。ライブラリが親指用にコンパイルされているかどうかを判断するにはどうすればよいですか?

ありがとう!

0 投票する
2 に答える
1386 参照

arm - ARMサム命令セットを使用するときに32ビット整数にアクセス(ロード/ストア)するのはアトミックですか?

サム命令セットとKeilrealviewコンパイラでARMcortexを使用すると、32ビット整数に安全にアクセスできますか?サムレジスタセットは16ビットなので、32ビット整数をフェッチするには2つのマシン命令が必要ですか?その場合、32ビットへのアクセスはアトミックではありません。私の心配が本当なら、それはint割り当てがクリティカルリージョンによって保護されるべきであることを意味しますか?

0 投票する
3 に答える
3241 参照

gcc - Apple AS および ARM/Thumb ADDS 命令

私は iPhone/iPad プロジェクトに取り組んでおり、いくつかの (すべてではない) 算術演算中にステータス レジスタを更新したいと考えています。デフォルトでは、Xcode は「Compile for Thumb」を使用しますが、これを変更したくありません。

次の GCC インライン アセンブリ コードは ARM では正常に動作しますが、Thumb ではコンパイル エラーが発生します:「命令は Thumb16 モードでサポートされていません - r6、r4、r5 を追加します」。問題は、ステータス レジスタの更新にあります。(私もそれを認識してmovcsおり、strcs変更する必要があります)。

Thumb には、CPSR でオーバーフロー (V) またはキャリー (C) を設定する ADD 命令がありますか? そうでない場合、オーバーフローとキャリーをテストする Thumb 固有のアセンブリ レベルの回避策はありますか?

編集: ARM アーキテクチャのアプリケーション バイナリ インターフェイス (ABI) で ARM ABI を利用するには、レジスタも移動する必要があります。