Impossibile compilare file assembly braccio con armasm
Domanda
Sto usando libmpeg2 per aver mostrato il video nel mio progetto Pocket PC. Dall'ultimo rilascio lib ha accelerazione per processore ARM, alcune delle funzioni vengono riscritti nel braccio di montaggio (in motion_comp_arm_s.S file separato). Il problema è armasm da Visual Studio 9 non mi posso compilarlo, producendo un sacco di errori. La mia domanda è, quale braccio di montaggio compilatore è adatto a tale codice?
.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]
...
Grazie per tutto l'aiuto
Soluzione
Questa è la sintassi utilizzata dal GNU assembler . Il codice stesso dovrebbe essere (più o meno) la stessa per qualsiasi assemblatore; per rendere questa build con il Microsoft assembler, i principali cambiamenti saranno:
- Cambia i caratteri
@
(che denotano commenti) per;
- Cambia le direttive (le parole che iniziano con
.
) documentata qui ai loro equivalenti di Microsoft, documentato qui . Per esempio.text
diventaCODE
.
Questo dovrebbe risolvere la maggior parte degli errori.
Altri suggerimenti
Usa ARM RVDS compilatore
Sintassi di un codice di esempio va in questo modo
AREA ARMex, CODE, READONLY
ENTRY
START
MOV R0,#1
MOV R1,#2
ADD R0,R0,R1
END
Salva il codice come test.s
comando per compilare e generare file oggetto è
armasm --arm test -o test.s