Ответ 1
попробуйте изменить в neon_matrix_impl.c и mat4.c #if defined(ARM_NEON)
в #if defined(_ARM_ARCH_7)
Я пытаюсь создать проект ios для архитектуры $(ARCHS_STANDARD_32_BIT)
- armv7
для последней версии iOS (iOS 7.0), и у меня есть следующая ошибка:
Unknown register name 'q0' in asm
в функции
static void neon_asm_mat4_vec4_mul(const float* __restrict m, const int* __restrict v, int* __restrict output)
{
asm volatile
(
// Store m & v - avoiding q4-q7 which need to be preserved - q0 = result
"vldmia %1, { q8-q11 } \n\t" // q8-q11 = m
"vldmia %2, { q1 } \n\t" // q1 = v
// Convert v to floats
"vcvt.f32.s32 q1, q1 \n\t"
// result = first column of A x V.x
"vmul.f32 q0, q8, d2[0] \n\t"
// result += second column of A x V.y
"vmla.f32 q0, q9, d2[1] \n\t"
// result += third column of A x V.z
"vmla.f32 q0, q10, d3[0] \n\t"
// result += last column of A x V.w
"vmla.f32 q0, q11, d3[1] \n\t"
// convert to integer
"vcvt.s32.f32 q0, q0 \n\t"
// output = result registers
"vstmia %0, { q0 } \n\t"
: // no output
: "r" (output), "r" (m), "r" (v) // input - note *value* of pointer doesn't change
: "memory", "q0", "q1", "q2", "q3", "q8", "q9", "q10", "q11" //clobber
);
}
Не могли бы вы помочь мне либо обновить мой код, чтобы он мог быть построен для новейшего оборудования, либо просто настроить параметры сборки по-разному. Я новичок в разработке iOS, поэтому я потерял...
попробуйте изменить в neon_matrix_impl.c и mat4.c #if defined(ARM_NEON)
в #if defined(_ARM_ARCH_7)
Те, кто использует Cocos2d 2.1, модификация (#if defined(ARM_NEON) ->#if defined(_ARM_ARCH_7)
) необходимы в двух макросах
Фактически ARM NEON использовался как механизм мультимедийного рендеринга в устройствах iOS, но теперь с iOS 7.0 и новыми механизмами рендеринга (ARM ARCH 64 бит).
Более подробную информацию можно получить из здесь.
Но для меня было действительно запутанно, что мой проект Xcode был отлично скомпилирован и успешно выполнен на моем iPod Touch (5-го поколения) без этих изменений. Модификация нужна только тогда, когда я пытался архивировать свой проект, чтобы отправить его на AppStore.