2
我想在NaCl中使用C++中的整数实现log2,我使用asm方式,因为nacl文档说它是唯一允许的写入ASM的方法,如下所示如何在NaCl中给出不同的实现方法
int log2(int x) {
int ret;
asm ("\tbsr %1, %0\n"
: "=r"(ret)
: "r" (x)
);
return y;
}
,但事实证明,ARM不支持这条指令,所以我只想为ARM写另一个版本。有没有办法做到这一点?
顺便说一句,我找到了一个解决方案,已在这个特定的功能,这是通过使用
static inline int log2(int x) {
return sizeof(int) * 8 - __builtin_clz(x) - 1;
}
在另一篇文章中提到
,所以我的问题是纯粹的打算放弃针对不同的CPU架构不同的实现方式。 (我试过的#ifdef ARCH_ARM,但它没有工作)
Got it!非常感谢 –