Почему gcc сообщает об ошибке, когда я добавляю список Clobber во встроенный asm? - PullRequest
0 голосов
/ 21 июня 2019

Я пишу код 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 жалуются:

"ошибка: у операнда m asm есть невозможные ограничения"

Но если бы я удалил «ebx» из списка clobber (оставьте только «memory»), это сработало бы. Какое значение следует поместить здесь в список клоббера?

...