あなたは私のことを言わなければならないでしょう。私はx86アセンブリの初心者であり、一般的にアセンブリです。AT&T構文の意味(%eax)?
だから、私の質問は、私のようなものがあります:
addl %edx,(%eax)
%のEAXをいくつかの整数へのポインタを保持するレジスタです。それをxpと呼びましょう
これは、それが言っていることを意味しますか:*xp = *xp + %edx
? (%edx
は整数)
私はちょうどaddlが結果を格納する場所に混乱しています。 %eax
がintへのポインタである場合は、(%eax)
がそのintの実際の値である必要があります。だからaddl
%edx+(%eax)
の結果を*xp
に保存しますか?私は本当に誰かがこれを私に説明するのが大好きです!
本当に助けていただきありがとうございます。
+1すてきな簡単な答え。 –
'(%eax)'は、[異なるアドレス指定モードの名前を付ける](https://stackoverflow.com/questions/46257018/do-terms-like-direct-indirect-addressingmode-実際にはIntel-x86-manに存在します)。 "メモリ間接"アドレッシングとは、CPUがメモリからアドレスをロードした後に、そのメモリを参照解除する*ことです(x86はメモリ間接アドレッシングをサポートしません)。 https://en.wikipedia.org/wiki/Addressing_mode#Memory_indirect –