Я написал простую программу, предназначенную для изменения значений с порядкового номера на обратный. Я пытался использовать инструкцию по сборке bswap
, но она никогда не возвращает правильное значение. Вот мой код в расширенном ASM:
unsigned int func(unsigned int a)
{
unsigned int b;
asm volatile (
"bswap %1\n\t"
"movl %1, %0"
:"=r"(b)
:"r"(b), "r"(a)
);
return b;}
Например, когда я передаю значение 0x00110011
функции, возвращаемое значение равно 00d0f5f7
. Каждый раз, когда я выполняю программу, возвращается другое значение независимо от параметра. Я не уверен, почему это происходит, любое объяснение будет оценено. Спасибо