当在嵌入式asm中添加Clobber列表时,为什么会出现gcc报告错误?

时间:2019-06-21 09:17:10

标签: gcc assembly inline-assembly volatile

我编写了一个C代码来再现内存重新排序,如下所示:

asm volatile(                                     
    "xor %0, %0\n\t                 "
    "movl $1, %1\n\t                "
    "movl %2, %0\n\t                " 
    : "=b"(r1), "=m" (X)
    : "m"(Y)
    : "memory", "ebx");                                                                                  

我不太明白gcc为什么抱怨:

  

“错误:'asm'操作数具有不可能的约束”

但是,如果我从“ clobber”列表中删除了“ ebx”(仅保留“ memory”),它会起作用。 什么样的值应该放在清单清单中?

0 个答案:

没有答案