問題タブ [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.
c++ - ARMとTHUMB用に別々の.exeファイルを生成することは可能ですか?
WM6用の組み込みC++プロジェクトがあります。一部のデバイスでは、リンカー設定「MACHINE:ARM」と互換性のないプリンターライブラリを使用しています。したがって、2つの.exeファイルを作成する必要があります。1つはTHUMBマシン用で、もう1つはARMマシン用で、コンパイルエラーを回避するためにコードの一部の行にコメントを付ける必要があります。2つの.exeファイルを生成し、ARM用とTHUMB用の2つの別々のフォルダーにビルドすることは可能ですか?
ありがとう、
arm - ARMサム命令セットとは何ですか?
「ARM11TechnicalRefManual」のセクション1-34の「Thumb命令セット」の下に、次のように書かれています。
「Thumb命令セットは、最も一般的に使用される32ビットARM命令のサブセットです。Thumb命令は16ビット長であり、プロセッサモデルに同じ影響を与える対応する32ビットARM命令があります。」
誰かがこの特に2番目の文についてもっと説明し、プロセッサがそれをどのように実行するかを言うことができますか?
arm - 逆アセンブル中に ARM 命令とデータを分離する方法
私は/(binutilsを使用して)thumb2(16ビットおよび32ビット)命令の手動分解を行うためのコードを書いています。本物の ARM 命令と DATA 部分を区別する問題に直面しています。
最大の問題は、命令がワードで整列されていないことです。そのため、32 ビット命令を読み取ろうとすると、多くの場合、実際には次の命令と重複します。
助けてください。
ありがとう、VJ
ios - ARM 命令と THUMB 命令の混合
アセンブリ コードで ARM 命令と THUMB 命令を混在させようとしています。たとえば、次のコードでは、両方のモードを使用しようとしています。
さて、私の理解では、このコードをライブラリにコンパイルして nm で実行するとmysymbol1、腕としてmysymbol2表示され、親指として表示されるはずです。つまり、
しかし、両方とも腕として現れています。ここで何が欠けていますか?私のアセンブラコマンドは次のとおりです。
arm - thumb2 命令セットの機能を強制的に 32 ビット アライメント アドレスで開始する方法は?
thumb2 命令セットには、16 ビット命令と 32 ビット命令があります。関数は、16 ビットまたは 32 ビットのアラインメント アドレスで開始できます。すべての関数を 32 ビット アライメント アドレスで開始する方法はありますか?
c - AT91SAM7x: おそらくリンカが原因の DisASM カオス
私は Eclipse と Yagarto ツールチェーン (非 eabi、GCC 4.7.1) を使用して ARM 7 チップ (Atmel の AT91SAM7X256) をプログラムします。このプロジェクトの目標は、ROM の定義された範囲にブートローダーを配置し、後で RAM にコピーすることです (下の画像を参照してください。アプリケーション コードの開始用の ROM アドレス 0x104000 は固定です)。プログラム (SEGGER J-Link および GDB) をデバッグするまでは、期待どおりに動作します。
メモリ構造の画像は次のとおりです: http://i47.tinypic.com/2vb6f7o.jpg (申し訳ありませんが、ここに画像を投稿することはできません)。
問題はリンクの .text セクションから始まります。主に次の方法で .text セクション全体を開始します (正しい): ( objdump -e -h common/exhandler.o > exhandler.lstによって逆アセンブルされた C コード)
リンクされた ELF ファイルを逆アセンブルすると、コードは次のように出力されます: ( wrong )
バイト シーケンスはそのまま残りますが、これらの ASM コマンドの解釈は異なります。私の推測では、リンク プロセスで Thumb と ARM コードに問題が発生したと考えられます。
私のリンカーファイル:
誰でもリンカ ファイルのエラーを見つけたり、次にどこを見ればいいのかヒントを教えてもらえますか?
読んでくれてありがとう、ポール
PS: ELF ファイル セクション ヘッダーの出力の一部を次に示します。これにより、重複するセクションがないことが明確になります。
xcode - -mno-thumb と GCC_THUMB_SUPPORT = NO の違いは何ですか?
Xcode 4.5 で Thumb サポートをオフにする方法は 2 つあります。
-mno-thumbフラグの指定Build Settings/Other C Flagsに設定
GCC_THUMB_SUPPORT_NOBuild Settings/User-Defined
これら2つの方法に違いはありますか?
assembly - 「更新条件フラグ」S は、16 ビット Thumb-2 アセンブリ命令セットでどのようにエンコードされますか?
そのため、クラス用の非常に基本的な逆アセンブラーを作成する必要があり、Thumb 命令に追加できる S がどのようにエンコードされるかを理解するのに苦労しています。
たとえば、命令 0x0011 は次のアセンブリ コードに対応します。
なぜ通常の動きにしないのですか?
同様に、0x1889 は以下に対応します。
リファレンスマニュアルを読んでわかる限り、これは S を除いた通常の add 命令と同じエンコーディングです。状態フラグの更新命令はどのように送信されますか?
binary - ARM の「親指のみ」のバイナリ
親指 (親指 1、親指 2 なし) 命令のみを使用する ARM ELF バイナリのソースがネット上にありますか?
(はい、Linux はサムオンリー プロセッサでは実行できないことを知りました。)
それ以外の場合、バイナリのコンテンツはできるだけ「通常」にする必要があります。分類器のトレーニング データとして使用したいと考えています。
gcc - thumb1のみをコンパイルします
gccにThumb1のみの命令にコンパイルするように指示するにはどうすればよいですか?
誰もがhelloworld.cを知っています:
そしてこれは私のコマンドラインです:
user @ debian-armel:〜$ gcc -mcpu = cortex-m3 -mthumb helloworld.c && objdump -d a.out
そしてvoilá:私が期待した16ビットとは対照的に、ほとんどの命令は32ビット幅です。
だから、私は何が間違っているのですか?