J'ai été googling pendant un certain temps mais toujours pas de solution. J'espère que quelqu'un peut m'aider à ce sujet.asm en ligne compilé en XCode pour Simulator, mais n'a pas pu compiler pour le périphérique
J'ai trois fonctions asm en ligne comme ci-dessous:
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);
}
Ils ont tous compilés avec succès dans XCode Simulator, mais a échoué quand je suis passé à construire pour l'appareil - 4.1 (pour iPhone). Le message que j'ai reçu est "contrainte impossible en asm". Je crois que le problème est le code d'assemblage ci-dessus ne fonctionne pas pour CPU basé sur ARM. Quelqu'un peut-il faire la lumière sur la façon de réécrire le code afin qu'il compile pour iPhone cpu? Il peut s'agir d'un assemblage ou d'un code C pur. Merci d'avance!
Leo
Qu'essayez-vous de faire? –
Juste une conjecture, mais l'assemblage que vous avez posté est x86 et les appareils iOS sont basés sur ARM, donc vous avez probablement besoin d'écrire l'assemblage ARM pour faire ce que vous voulez. –
@Dean. Vous avez absolument raison, et c'est en fait ma question. Comment puis-je réécrire le code pour cpu ARM? Avez-vous une idée? Ce serait très apprécié si vous pouviez faire la lumière sur la réécriture dans l'assemblage ARM ou le code C pur. – user538220