No es posible compilar archivo de ensamblaje del brazo con armasm
Pregunta
Estoy usando libmpeg2 para mostrar imágenes de vídeo en mi proyecto de Pocket PC. Última versión de esta lib tiene aceleración para el procesador ARM, algunas de las funciones se vuelven a escribir en el brazo de montaje (en motion_comp_arm_s.S de archivos independientes). El problema es armasm desde Visual Studio 9 no puedo compilarlo, produciendo una gran cantidad de errores. Mi pregunta es, qué brazo de montaje compilador es adecuado para tal código?
.text
@ ----------------------------------------------------------------
.align
.global MC_put_o_16_arm
MC_put_o_16_arm:
@@ void func(uint8_t * dest, const uint8_t * ref, int stride, int height)
pld [r1]
stmfd sp!, {r4-r11, lr} @ R14 is also called LR
and r4, r1, #3
adr r5, MC_put_o_16_arm_align_jt
add r5, r5, r4, lsl #2
ldr pc, [r5]
...
Gracias por cualquier ayuda
Solución
Esa es la sintaxis utilizada por el GNU ensamblador . El código en sí mismo debe ser (más o menos) la misma para cualquier ensamblador; para hacer esta construcción con el ensamblador de Microsoft, los principales cambios serán los siguientes:
- Cambiar los caracteres
@
(que denotan los comentarios) para;
- Cambiar las directivas (las palabras que comienzan con
.
) documentado aquí a sus equivalentes de Microsoft, documentado aquí . Por ejemplo.text
convierteCODE
.
Esto debería solucionar la mayor parte de los errores.
Otros consejos
El uso de ARM RVDS compilador
Sintaxis de un código de ejemplo es la siguiente
AREA ARMex, CODE, READONLY
ENTRY
START
MOV R0,#1
MOV R1,#2
ADD R0,R0,R1
END
Guardar el código como test.s
comando para compilar y generar el archivo objeto es
armasm --arm test -o test.s