繁体   English   中英

带有属性的AT&T语法

[英]movl AT&T syntax with attributes

这是AT&T Syntaxassembly code段。

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

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

我知道movl将数据从源操作数复制到目标操作数。 也就是说,就我而言,它是将0 to eax 。这就是我从此链接了解的内容- slide 2

但是,我不理解其余的内容。 有人可以帮我解释一下。

您应该阅读GCC内联汇编约束

简而言之, ::"r"(&foo_array)表示要为汇编代码提供一个输入,该输入应放置在寄存器中,并且其值应为foo_array的地址。
代码中的%0替换为该输入,因此代码将foo_array的地址foo_arrayeax

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM