[英]movl AT&T syntax with attributes
这是AT&T Syntax
的assembly 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_array
在eax
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.