Por lo tanto, aquí hay una descripción rápida de cómo incluir el código ARM asm en un proyecto Xcode, esto se prueba en versiones de Xcode hasta 4.3. Para mi proyecto específico, quería definir una función en el código ASM guardado con un nombre de archivo como "decode_arm.s". Ya tengo una implementación C de la misma función que se compila cuando se ejecuta bajo el simulador, por lo que la lógica cpp condicional asegura que el código ARM ASM solo se compila en el proyecto cuando se está compilando para el dispositivo.
// This file implements the following C functions for the ARM platform.
// Both ARM6 and ARM7 devices are supported by this implementation.
//
// maxvid_decode_c4_sample16()
#if defined(__arm__)
# define COMPILE_ARM 1
# if defined(__thumb__)
# define COMPILE_ARM_THUMB_ASM 1
# else
# define COMPILE_ARM_ASM 1
# endif
#endif
#if defined(COMPILE_ARM)
# define USE_GENERATED_ARM_ASM 1
#endif // COMPILE_ARM
#if defined(USE_GENERATED_ARM_ASM)
.section __TEXT,__text,regular
.section __TEXT,__textcoal_nt,coalesced
.section __TEXT,__const_coal,coalesced
.section __TEXT,__picsymbolstub4,symbol_stubs,none,16
.text
.align 2
.globl _maxvid_decode_c4_sample16
.private_extern _maxvid_decode_c4_sample16
_maxvid_decode_c4_sample16:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 1, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, lr}
add r7, sp, #12
stmfd sp!, {r8, r10, r11}
(ASM CODE HERE)
ldmfd sp!, {r8, r10, r11}
ldmfd sp!, {r4, r5, r6, r7, pc}
.subsections_via_symbols
#else
// No-op when USE_GENERATED_ARM_ASM is not defined
#endif
¿por qué recomendaría un ensamblador x86 para escribir ensambles ARM? – WinterMute
¡Sí, realmente me acabo de dar cuenta de que NASM no es compatible con ARM, solo lo hace con x86! Soy bastante nuevo en el ensamblaje de ARM, por lo que no sé de un buen ensamblador de ARM que también sea gratuito, lo siento. –