0

assembly codeこれはinのスニペットですAT&T Syntax

int foo_array[64*1024]  __attribute__ ((aligned (8192)));

void
foo()
{
    __asm__("movl %0,%%eax"::"r"(&foo_array));

movlソースオペランドからデスティネーションオペランドにデータをコピーすることを理解しました。つまり、私の場合は動いています..これは、このリンク0 to eaxから理解したものです-slide 2

しかし、私はそれの残りを理解していません。誰か説明してくれませんか。

4

1 に答える 1

3

GCC インライン アセンブリの制約を読む必要があります。

つまり、::"r"(&foo_array)アセンブリ コードに 1 つの入力が必要であり、その入力をレジスタに配置し、その値を のアドレスにする必要があるということですfoo_array
コードの%0in はその入力に置き換えられるため、コードは in のアドレスを配置foo_arrayeaxます。

于 2013-06-10T08:23:00.357 に答える