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!非常感謝 –