G CC расширенная встроенная сборка - «неверный суффикс инструкции для mov» - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь понять, как работает расширенная встроенная сборка в G CC. Но когда я пытаюсь запустить простую тестовую программу, я получаю сообщение об ошибке: «неверный суффикс инструкции для mov»

Пример программы:

unsigned char destination;
unsigned char ret;
unsigned int somevalue;

asm ("movb %1, %%al\n\t"
    "push %1\n\t"
    "pop edx\n\t"
    "not %%al\n\t"
    "movb %%al, %0"
    : "=r" (destination), "=r"(somevalue)
    : "r" (ret));

destination должен быть загружен в al. После этого somevalue помещается в стек. После этого он попадает в регистр edx. Инструкция not должна выполняться для al, которая содержит значение destination. После этого результат будет выдан ret. Нет ограничений на использование регистров для выполнения этой программы (я полагаю, это означает, что все регистры являются клобберами?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...