18

私が読んだことからmov、それは2番目の引数を最初の引数にコピーします。では、これは何をするのでしょうか?

movl 8(%ebp)、%edx

edxにあるものはすべて関数の最初のパラメーターにコピーされます(からのオフセットが+8ebpのパラメーターであるため)?

これが本当に意味するのは、最初のパラメーターをedxレジスターに移動することだと思いますが、ウィキペディアでそれが逆であると読みましたか?

4

1 に答える 1

30
movl 8(%ebp), %edx

「AT&T構文」にあります。この構文では、ソースが最初に来て、宛先が次に来ます。そうです、あなたの信念は正しいです。ほとんどのドキュメントでは、逆の順序の「Intel構文」を使用しています。これは、x86アセンブリを初めて使用する人にとってはかなりの混乱の原因です。

Intel構文では、命令は次のように記述されます。

mov edx, [ebp + 8]

%レジスタ名の前に存在しないこと、アドレスに括弧の代わりに角かっこを使用していること、およびl命令に接尾辞がないことに注意してください。これらは、あなたが見ているアセンブリの形式を知るための死んだプレゼントです。

于 2011-05-04T22:48:56.170 に答える