我正在使用一週前編譯的第三方庫。
今天我再次坐在辦公桌前,我又推了一下,然後我的頭被吹了。
我一直在拍這個錯誤:'asm'中的不可約束條件
impossible constraint in 'asm'
的代碼是:
static inline unsigned ROLc(unsigned word, const int i)
{
asm ("roll %2,%0"
:"=r" (word)
:"0" (word),"I" (i));
return word;
}
有些神祕的事情發生......這只是我在想,現在的事情是「跆拳道? 「
平臺英特爾CoreDuo與W32 XP板載。
另外兩個問題:
- 什麼可以摧毀我的體型?
- 我想asm語法不正確,那我該如何解決?
- 在哪裏可以找到 '酷' 的asm參考(我的意思是像一些CPP參考以上純處理器命令列表數據表/手動)
問候 P.
UPDATE:
哈哈我感覺像轉儲屁股,上週我安裝了草莓Perl ...安裝和拋出gcc的路徑和我的編譯系統採取'默認'編譯器....:D
但我已經修復使用:
return (word << i) | (word >> (32 - i));
但是'var << shift'確實會被編譯爲'rol'指令嗎? – Skizz 2010-09-06 14:27:27
這是圖書館的代碼,不是我的。也許'<< | >>'將被編譯爲'roll | rorl',但我沒有進入asm這麼多...但是仍然不知道爲什麼它不會編譯... – bua 2010-09-06 14:32:56
@Skizz不,轉動指令只能在純C中實現,有兩個班次和一個or。 C表達式'var << shift'將用'sal'指令編譯。 – 2010-09-06 14:59:34