Я пытаюсь реализовать в log2 для целого числа в C++ в NaCl, я использовал способ asm, так как в документации по nacl сказано, что это единственный разрешенный способ писать ASM, что соответствует следующемуКак дать различную реализацию для ARM в NaCl
int log2(int x) {
int ret;
asm ("\tbsr %1, %0\n"
: "=r"(ret)
: "r" (x)
);
return y;
}
, но оказывается ARM не поддерживает эту команду, поэтому я хочу, чтобы написать еще одну версию для только ARM. Есть ли способ сделать это?
Btw, я нашел одно решение этой конкретной функции уже, что с помощью
static inline int log2(int x) {
return sizeof(int) * 8 - __builtin_clz(x) - 1;
}
упоминается в другом посте, поэтому мой вопрос чисто о том, чтобы дать различные реализации для различных архитектуры процессора. (Я пытался #ifdef ARCH_ARM, но он не работает)
Понял! большое спасибо –