Кто-нибудь знает, как я могу избавиться от следующего предупреждения ассемблера?
Код - x86, 32 бит:
int test (int x)
{
int y;
// do a bit-rotate by 8 on the lower word. leave upper word intact.
asm ("rorw $8, %0\n\t": "=q"(y) :"0"(x));
return y;
}
Если я его скомпилирую, я получаю следующее (очень правильное) предупреждение:
Warning: using `%ax' instead of `%eax' due to `w' suffix
То, что я ищу, - это способ сообщить компилятору/ассемблеру, что я хочу получить доступ к младшему 16-битовому подрегисту% 0. Также было бы полезно получить доступ к байтам sub-register (в этом случае AL и AH).
Я уже выбрал модификатор "q", поэтому компилятор вынужден использовать EAX, EBX, ECX или EDX. Я убедился, что компилятор должен выбрать регистр с субрегистрами.
Я знаю, что могу заставить asm-код использовать определенный регистр (и его поддиректории), но я хочу оставить задание распределения регистров до компилятора.