問題タブ [immediate-operand]

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 投票する
7 に答える
55288 参照

assembly - ARMのMOV命令は、2番目のオペランドとして多数を使用してどのように機能しますか?

ARMアセンブリ言語の勉強を始めたばかりですが、MOVを使用してイミディエート番号をレジスタに転送する方法がわかりません。

ARMリファレンスマニュアルと私の教科書の両方から、MOV命令の直後の数の範囲は0から255であると言われています。しかし、ADS 1.2 IDEで自分のPCでテストすると、指示

うまく機能します。番号0xFFFFFFFFは仕様の範囲外ではありませんか?

0 投票する
6 に答える
36179 参照

assembly - MUL 命令は即値をサポートしていません

MULいくつかのチュートリアルと例を読みましたが、命令がどのように機能するかについて頭を悩ませることはできません。使っていて問題ADDありませんSUB。したがって、明らかに、この命令はオペランドにレジスタの値を乗算します。

第 1 オペランドで乗算されるレジスタ (eax、ebp、esp など) は何ですか? 結果はどのレジスタに格納されるので、スタックに移動できますか? 申し訳ありませんが、私はちょうど x86 アセンブリを学んでいます。

この行をコンパイルしようとすると...

わかりましたError: suffix or operands invalid for 'mul'。誰でも私を助けることができますか?

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

assembly - x86でAT&T構文を使用して長いレジスタにイミディエートバイトを追加するにはどうすればよいですか?

Intelのマニュアルを読んで理解していることから、次のような命令を記述できるはずであり、合計3バイトadd $0x7f, %ebxとしてエンコードされている必要があります。83 /0 ib

ただし、これを行うと(、、、またはを使用するかどうかに関係なくaddaddbaddl常に即値を32ビット値に「プロモート」し、81 /0 id6バイトとしてエンコードして使用します。adc、などにも同じ問題がありsubます。GNUでAT&T構文を使用していることに注意してくださいas

私は1日以上解決策を探していましたが、見つかりませんでした。誰かアドバイスしてもらえますか?

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

assembly - フィックスアップ後の無効な定数?

何らかの理由で、このコードをコンパイルしようとすると、コンパイラは次のように言いますsyscall.s:72:invalid constant (0x172) after fixup

なぜそれをしているのかわからない。に小さい定数を入れると、r7うまくいきます。しかし、数値が高いと、このエラーが吐き出されます。mov r7, #300とを実行して一時的に修正しましたadd r7, #70。これにより、目的の効果が得られます。ただし、エラーの原因はまだわかりません。

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

assembly - DC.W (定数の定義) で数値の前に # が必要ないのはなぜですか?

次のコード行があります。

これは基本的に意味しX = 5ますが、すべきではありませんX DC.W #5か?

MOVEを使用するときは常に必要です#

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

assembly - ARM アセンブリで LDR over MOV (またはその逆) を使用するのはなぜですか?

私はこのチュートリアルを見ています: http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/ok01.html

組み立ての最初の行は次のとおりです。

2番目は次のとおりです。

ldrメモリからレジスタに値をロードするためだと思いました。しかし=、0x20200000はメモリアドレスではなく値であることを意味しているようです。どちらの行も絶対値をロードしているようです。

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

assembly - ATT アセンブリの理解 (即時)

次の組立ラインがあるとしましょう

%edi/%edx レジスタに格納しているのは正確には何ですか。

基本的に、このコードを C プログラムに変換するとしたら、いくつかの変数を -1 と 1 に初期化することになります。

即時=「一定の定数」は理解していますが、それはどういう意味ですか?

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

c++ - 腕の動きに有効な imm num を取得する簡単な方法は?

Arm mov には、即値が 2 の倍数で回転された 8 ビットでなければならないという制限があります。次のように記述できます。

しかし、次のように書くことはできません。

0x5000 は 0x5000 + 1 として分割できます。私の意味では、有効な即値と小さな数の合計です。

では、与えられた 32 ビットの数値について、最も近い有効な即値をすばやく見つけるにはどうすればよいでしょうか? このような:

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

assembly - 腕の即値をエンコードする方法は?

次のような inst があるとします。

マシンコードは

05 CA 8C E2

しかし、0x5000 がわかっている場合、どうすれば 101000000101 を取得できるでしょうか? この逆変換は1対1対応ですか?ありがとう。

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

assembly - at&tアセンブリ構文で$記号を使用する場合と使用しない場合の数値の違いは何ですか?

.data セクションに次の項目があるとします。

そしてコードでは、

$記号を使用すると定数になると思いますので、%eaxにはメモリアドレスがありますが、%ebxはどうですか?

2つの命令の正確な違いは何ですか?