ios - Nombre de registro desconocido ''q0'' en asm
ios7 build (2)
Aquellos que usan Cocos2d 2.1, la modificación ( #if defined(ARM_NEON) ->#if defined(_ARM_ARCH_7)
) es necesaria en dos macros
- neon_matrix_impl.c y
- mat4.c en la línea número 218
En realidad, se usó ARM NEON como motor de renderización multimedia en dispositivos iOS, pero ahora con iOS 7.0 y en adelante se usan nuevos motores de renderización (ARM ARCH 64 bit) .
Más detalles se pueden obtener desde here .
Pero fue realmente confuso para mí que mi proyecto Xcode se compiló perfectamente y se ejecutó con éxito en mi iPod Touch (5ta generación) sin estas modificaciones. La modificación fue necesaria solo cuando intenté archivar mi proyecto para enviarlo a AppStore.
Estoy tratando de construir el proyecto ios para la arquitectura $(ARCHS_STANDARD_32_BIT)
- armv7
para el último iOS (iOS 7.0) y tengo el siguiente error:
Unknown register name ''q0'' in asm
en función
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
);
}
¿Podría ayudarme, por favor, a actualizar mi código para que pueda compilarse con el último hardware o simplemente configurar las configuraciones de compilación de manera diferente? Soy nuevo en el desarrollo de iOS, así que estoy algo perdido ...
Intenta cambiar en neon_matrix_impl.c y mat4.c
#if defined(ARM_NEON)
a
#if defined(_ARM_ARCH_7)