Я пишу код 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»), это сработало бы.
Какое значение следует поместить здесь в список клоббера?