'asm'中不可能的约束

时间:2010-09-06 14:14:52

标签: c assembly

我正在使用一周前编译的第三方库 今天我再次坐在办公桌前,我再次推了一下,然后我的头被炸了 我被枪杀了这个错误:

  

'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参考,比如纯处理器命令列表数据表/手册)
  4. 问候 P上。

    更新
    哈哈我觉得像dump-ass,上周我安装了草莓perl ...安装并抛出gcc路径,我的构建系统采用'默认'编译器....:D
    但是我已经使用:

    修复了这个问题
    return (word << i) | (word >> (32 - i));
    

1 个答案:

答案 0 :(得分:4)

  1. 您可能已自动升级到新编译器,该编译器已更改语法
  2. This建议使用Ic而不是I;我没有测试这个
  3. 不确定你的意思,汇编的C ++参考对我来说没什么意义。 This是关于gcc和内联汇编的(旧)HOWTO,它可能就是你所追求的?