سؤال

أنا أستخدم 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top