Я довольно долго гуглял, но до сих пор не нашел решения.Я надеюсь, что кто-то может помочь мне в этом.
У меня есть три встроенные функции asm, как показано ниже:
static __inline__ int Bsf(uint32_t Operand) {
int eax;
asm __volatile__ (
"bsfl %0, %0" "\n\t"
: "=a" (eax)
: "0" (Operand)
);
return eax;
}
static __inline__ int Bsr(uint32_t Operand) {
int eax;
asm __volatile__ (
"bsrl %0, %0" "\n\t"
: "=a" (eax)
: "0" (Operand)
);
return eax;
}
static __inline__ uint64_t TimeStampCounter(void) {
uint32_t eax, edx;
asm __volatile__ (
"rdtsc" "\n\t"
: "=a" (eax), "=d" (edx)
:
);
return MAKE_LONG_LONG(eax, edx);
}
Все они успешно скомпилированы в XCode для Simulator, но не удалось, когда я переключился на сборкуУстройство - 4.1 (для iPhone).Сообщение, которое я получил, является "невозможным ограничением в asm".Я считаю, что проблема в том, что приведенный выше ассемблерный код не работает для процессора на базе ARM.Может ли кто-нибудь пролить свет на то, как переписать код, чтобы он компилировался для процессора iPhone?Это может быть либо ассемблер, либо чистый C-код.Заранее спасибо!
Лев