簡體   English   中英

“ asm”中不可能的約束

[英]impossible constraint in 'asm'

我正在使用一周前編譯的第三方庫。
今天,我再次坐在辦公桌前,再次推動構建,然后腦袋爆裂。
我被槍殺了這個錯誤:

“ asm”中不可能的約束

代碼是:

static inline unsigned ROLc(unsigned word, const int i)
{
   asm ("roll %2,%0"
      :"=r" (word)
      :"0" (word),"I" (i));
   return word;
}

發生了一些神秘的事情……我現在唯一想的是“ WTF?”
平台上裝有W32 XP的Intel CoreDuo。

另外兩個問題:

  1. 什么會破壞我的建築?
  2. 我認為asm語法不正確,那么我該如何解決?
  3. 我在哪里可以找到“酷”的asm參考(我的意思是一些cpp參考,例如純處理器命令列表數據手冊/手冊)

關於P。

更新:
哈哈,我感覺像是個dump-ass,上周我安裝了strawberry perl ...它會在路徑上安裝並拋出gcc,並且我的構建系統使用“默認”編譯器....:D
但是我已經修復了使用:

return (word << i) | (word >> (32 - i));
  1. 您可能已自動升級到新的編譯器,從而更改了語法
  2. 建議使用Ic而不是I。 我沒有測試
  3. 不知道你的意思,對於匯編的C ++參考對我來說沒有多大意義。 是關於gcc和內聯匯編的(舊的)HOWTO,可能是您所追求的?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM