【发布时间】:2014-04-18 07:32:01
【问题描述】:
我正在尝试在 NaCl 中的 C++ 中在 log2 中实现整数,我使用 asm 方式,因为 nacl 文档说这是编写 ASM 的唯一允许方式,如下所示
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,但没用)
【问题讨论】:
标签: c++ assembly google-nativeclient