Я использую стороннюю библиотеку, скомпилированную неделю назад.
Сегодня я снова сел за стол, снова нажал на сборку, а затем у меня взорвалась голова.
Я был застрелен с этой ошибкой:
невозможное ограничение в 'asm'
Код:
static inline unsigned ROLc(unsigned word, const int i)
{
asm ("roll %2,%0"
:"=r" (word)
:"0" (word),"I" (i));
return word;
}
Некоторые мистические вещи случаются ... единственное, о чем я сейчас думаю, это 'WTF?'
Платформа Intel CoreDuo с W32 XP на борту.
Два дополнительных вопроса:
- что может разрушить мою сборку?
- Полагаю, что синтаксис asm неверен, так как я могу это исправить?
- Где я могу найти «классную» ссылку на asm (я имею в виду некоторую ссылку на cpp, например, на таблицу / руководство по списку команд чистого процессора)
С уважением
П.
UPDATE:
Хаха, я чувствую себя как дурак, на прошлой неделе я установил клубничный Perl ... который устанавливает и выдает gcc по пути, и моя система сборки использует компилятор по умолчанию ....: D
Однако я исправил это, используя:
return (word << i) | (word >> (32 - i));