我正在使用一周前编译的第三方库。
今天我再次坐在办公桌前,我又推了一下,然后我的头被吹了。
我一直在拍这个错误:'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