سؤال

وكيف يتم ذلك؟ ما هي الخطوات التي أحتاج إليها لاتخاذ وما هي المخاطر وgotchas هناك للنظر؟

هل كانت مفيدة؟

المحلول

ولقد حصلت على هذا العمل، وذلك بفضل بعض المساعدة من الداخل في أكثر من أبل Devforums ، يجب عليك الاشتراك إذا كنت مطورا فون مخصص.

وأول شيء أول، انها <م> __ __ ASM () ، لا سهل <م> ASM () .

وثانيا، افتراضيا، كسكودي يولد الهدف تجميع أن يجمع التجمع مضمنة ضد مجموعة التعليمات ARM الإبهام، لذلك USAT لم يعترف به التعليم الصحيح. لحل هذه المشكلة، القيام "الحصول على معلومات" على الهدف. انتقل لأسفل إلى قسم "دول مجلس التعاون الخليجي 4.0 - إنشاء رمز"، وإلغاء "ترجمة لالإبهام". ثم هذا المقتطف التالي سوف تجمع ما يرام إذا قمت بتعيين SDK النشط إلى "جهاز"

inline int asm_saturate_to_255 (int a) {
  int y;
  __asm__("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));
  return y;
}

وبطبيعة الحال، والآن فإنه لن ينجح مع محاكي فون. ولكن TargetConditionals.h لديه يعرف يمكنك #IFDEF ضد. وهي <م> TARGET_OS_IPHONE و <م> TARGET_IPHONE_SIMULATOR .

نصائح أخرى

وأنا أكتب لا بأس به من ARM اللحاء-A8 التجمع رمز. وحدة المعالجة المركزية على اي فون هو ARM11 (AFAIK) حتى مجموعة التعليمات الأساسية هو نفسه.

وماذا بالضبط الذي تبحث عنه؟ ويمكنني أن أعطيكم بعض الأمثلة إذا كنت تريد.


وتحرير:

ولقد وجدت أن على اي فون لديك لاستخدام مترجم-llvm دول مجلس التعاون الخليجي. وبقدر ما أعرف يجب أن تفهم بناء الجملة المجمع مضمنة من دول مجلس التعاون الخليجي. إذا كان الأمر كذلك جميع الدروس المجمع ARM المضمنة ستعمل على اي فون كذلك.

وهنا هو الحد الأدنى للغاية وظيفة مضمنة المجمع (في C). فأرجو أن تقول لي إذا كان يجمع ويعمل على اي فون؟ اذا كان يعمل يمكنني خرف قليلا كيف نفعل الاشياء المفيد في ARM المجمع المضمنة، لا سيما بالنسبة للبنية ARMv6 وملحقات DSP.

inline int saturate_to_255 (int a)
{
  int y;
  asm ("usat %0, #8, %1\n\t" : "=r"(y) : "r"(a));
  return y;
}

يجب أن يكون معادلا ل:

inline int saturate_to_255 (int a)
{
  if (a < 0) a =0;
  if (a > 255) a = 255;
  return a;
}

ويسجل يمكن أن تستخدم أيضا بشكل واضح في ASM مضمنة

void foo(void) {
#if TARGET_CPU_ARM64
    __asm ("sub        sp, sp, #0x60");
    __asm ("str        x29, [sp, #0x50]");
#endif
}

وينصح الإبهام لتطبيق والتي لا تتطلب عملية تعويم الثقيلة. الإبهام يجعل رمز حجم أصغر والنتائج أيضا في تنفيذ التعليمات البرمجية بشكل أسرع.

وهكذا يجب أن تتحول الإبهام فقط قبالة لتطبيق مثل الألعاب 3D ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top