غير قادر على تجميع ملف تجميع الذراع مع Armasm
سؤال
أنا أستخدم libmpeg2 لعرض الفيديو في مشروع Pocket Pc. الإصدار الأخير من هذا lib لديه تسارع لمعالج ARM ، يتم إعادة كتابة بعض الوظائف في مجموعة ARM (في ملف منفصل motion_comp_arm_s.s). المشكلة هي Armasm من Visual Studio 9 غير قادر على تجميعها ، مما ينتج عنه الكثير من الأخطاء. سؤالي هو ، أي مترجم تجميع الذراع مناسب لمثل هذا الرمز؟
.text
@ ------------------------------------------- --------------- .Align .global MC_PUT_O_16_ARM MC_PUT_O_16_ARM: void func (uint8_t * dest ، const uint8_t * ref ، stride ، int height) pld [r1] stmfd sp! {R4-R11 ، lr} @ r14 يسمى أيضًا LR و R4 ، R1 ، #3 ADR R5 ، MC_PUT_O_16_ARM_ARMIGN_JT ADD R5 ، R5 ، R4 ، LSL #2 LDR PC ، [R5
...
شكرا لك على أي مساعدة
المحلول
هذا هو بناء الجملة المستخدمة من قبل مجمع GNU. يجب أن يكون الكود نفسه (أكثر أو أقل) هو نفسه لأي تجميع ؛ لجعل هذا البناء مع Microsoft Assembler ، ستكون التغييرات الرئيسية هي:
- غير ال
@
الشخصيات (التي تشير إلى التعليقات) إلى;
- تغيير التوجيهات (الكلمات التي تبدأ
.
) موثقة هنا إلى مكافئات Microsoft الخاصة بهم ، موثقة هنا. فمثلا.text
يصبحCODE
.
هذا يجب أن يصلح معظم الأخطاء.
نصائح أخرى
استخدم برنامج التحويل البرمجي لـ ARM RVDS
بناء جملة رمز العينة يذهب هكذا
AREA ARMex, CODE, READONLY
ENTRY
START
MOV R0,#1
MOV R1,#2
ADD R0,R0,R1
END
احفظ الرمز كاختبار
أمر لتجميع وإنشاء ملف الكائن هو
armasm --arm test -o test.s