問題タブ [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.
assembly - イッテ イン アーム アッセンブリ
次の行はアーム アセンブリで何をしますか。
最初の行を取得します (r1 と 22 を比較します) が、2 行目はどうですか (以前に itte コマンドを見たことがなく、グーグルで検索しても何も返されませんでした)
assembly - objdump と ARM と Thumb の比較
ARM 用にビルドされたオブジェクトを gcc で逆アセンブルしようとしています。残念ながら、objdump はコードが ARM と Thumb のどちらであるかを推測しようとしていますが、間違っています。実際には ARM であるのに、コードが Thumb であると認識します。
objdump には、強制的にすべての命令を Thumb ( -Mforce-thumb) として解釈するオプションがありますが、ARM モードを強制するオプションはありません!
これは私には非常に奇妙な省略のように思え、作業を完了する能力を著しく妨げています (私は組み込みデバイスを使用しており、デバッグの唯一の手段は逆アセンブリを確認することです)。Thumb をサポートしない ARM アーキテクチャを使用するよう objdump に指示するなど、さまざまなアプローチを試しましたが、何も機能していないようです。何か案は?
(そして、はい、命令が本当にARMであることは知っています...)
youtube - カスタム イメージをデフォルトのビデオ サムとして使用することを回避しますか?
YouTube に新しい動画をアップロードすると、YouTube によって 3 つのサムネイル画像が自動的に生成されます。残念ながら、これら 3 つの画像は役に立たないことがよくあります。埋め込みコードを使用するときに独自のカスタム サムネイル画像を使用する回避策はありますか?
ios - ARM / Thumb(IOS)でのBLX命令のデコード
ARMのドキュメントの多くを読みましたが、BLX命令のデコードに問題があります。次に2つの例を示します。
これらは両方とも同じ場所、ここに見られるように仮想アドレス0x5FE4に行くことになっています:
ただし、上記の2つのアドレス(0x347Cと0x469C)から、それらの命令バイトを使用して取得するためにどのような計算が使用されているかを理解することはできません。ARMのドキュメントによると、2の右シフトを使用した相対的なジャンプであると想定されていますが、数値はうまくいきません。
誰か助けてもらえますか?
gcc - C、GCC(ベアメタル)からARMアセンブリを呼び出す
ARMでGCCを使用してベアメタルプログラミングを実行し、QEMUでテストしようとしています。CからARMラベルを呼び出すたびに、プログラムがハングします。https://gist.github.com/1654392に問題を示す簡単なコード例があります。そのコードでactivate()を呼び出すと、ハングします。
objdumpを使用して、アセンブリからCコードに(_startからのように)blを実行すると、thumb命令に切り替わる小さなラッパーが生成されることを確認しました。Cコードはすべてthumb命令で生成されているようですが、私のアセンブリはすべてARM(32ビット)命令で生成されています。これがなぜなのか、どうやって修正するのかわかりません。
iphone - iPhoneアプリのバイナリサイズを減らすための便利な方法
Apple App Storeの要件に合わせてアプリのバイナリサイズを減らす方法は?利用できる便利な方法はありますか?
以下の方法を試しました。
- 元の32バイトの代わりに16バイトのサム命令を生成します。
- LLVM +XCode4.2を使用してプロジェクトをビルドします。
まだ大きいです、ねえ、あなたは賢い人です、どんなアイデアやヒントも共有して話し合ってください、事前に感謝します。
arm - ARM (thumb) ファームウェア mod...ASM の数行をコードに変換して mod を作成する方法
ファームウェアを IDA (ARM920 コア) で逆アセンブルします。ほとんどは Thumb モードです。一部は ARM モードです。ASM でいくつかの改造を行いたいです。
ASM の数行 (数十行) を機械語に変換する最も簡単な方法は何ですか。誰かが無料のツール/方法を提案できますか。
WinARMをダウンロードしました。プログラマーのメモ帳が付属しています。数時間経ち、すべてを理解しようとしています...数行のASMをコンパイルするだけです...そして私が作成したMAKEファイルはまだ機能していません(行末に関する何か)
wpf - 親指を使用して変換されたコントロールを移動すると、奇妙な動作が発生する
親指を使用してキャンバス上でコントロールを移動しようとすると、奇妙な動作が発生しました。コントロールをキャンバスに追加し、Thumb DragDelta イベントを使用してコントロールを移動すると、すべてがうまく見えます。しかし、回転変換をコントロールに適用すると、コントロールをドラッグするのは奇妙です。コントロールはカーソルの周りを回り始め、角度が大きいほど円が大きくなります。
変換された要素で親指を機能させる方法を知っている人はいますか? 私はそれを理解しようと一日中過ごしましたが、頭に賢いものは何もありません。
ご協力いただきありがとうございます!
gcc - Thumb コードで BX を使用して Thumb 関数を呼び出すか、別の関数の Thumb 命令にジャンプする
ファームウェアの改造に役立つスキルを習得しようとしています (ソース コードはありません)。これらの質問は、サム コードから BX を使用して、他の既存のサム コードをジャンプまたは呼び出すことに関するものです。
- BX を使用して、THUMB コードから既存のファームウェア THUMB コードにジャンプするにはどうすればよいですか。
- THUMB コードから BX を使用して既存の THUMB 関数 (最初に LR を設定する必要があります) を呼び出す方法を教えてください。
私の理解では、CPUはLSBビット(ビット0)を見ており、1CPUの状態を「親指の状態」に保つためにこれが設定されていることを確認する必要があります。したがって、lsb ビットを 1 に設定するには、1 を追加する必要があると思います。
だから...たとえば、0x24000にジャンプしたいだけです(いくつかの既存のTHUMBコードの途中で)
これは正しいと思いますか?
ここで、BX を使用して既存のサム関数を呼び出したいとします。それを返してもらいたいので、返す場所に LR を設定する必要があります。
呼び出したい関数が 0x24000 にあるとしましょう。使用するように提案されました:
ここに私が理解できないものがあります:
R2 のアドレスには lsb ビットが設定されていないため、
bx r2モードを ARM モードに切り替えませんか??LR.. PC のアドレスは (現在の命令の先頭 + 4) であるとのことでした。Thumb と Arm の両方で、命令アドレスは (16 ビットまたは 32 ビット) 揃える必要があるため、LSB ビットが 1 に設定されることはありません。LSB ビットが 1 に設定されるのは奇数のみです。
したがって、上記のコードでは、LR を (PC) に設定していますが、LSB ビット 1 も設定されていないアドレスです。それで、私が呼び出した関数がエピローグに来てBX LR、...うーん..どうすればTHUMBコードに戻ることができますか? 私は何かが欠けているに違いない...
通常、BL は関数の呼び出しに使用されます。マニュアルには、BL 命令が LR をコードの次の行に設定すると書かれています...これは、(通常使用される) BLTHUMB 命令が LR をreturn addr + 1自動的に設定することを意味しますか?
assembly - ldr と ldr.w の違い
最近、MachO バイナリをデバッグする必要があり、次の命令に出くわしました:-
ldr.w r4, [r1, r0, lsl #2]
ldr r4, [r1, r0, lsl #2]r0 を左に 2 回シフトし、それを r1 に追加して、結果を逆参照することを理解しています。
ldr.w はどう違うのですか?