سؤال

أحاول حاليا تحسين بعض التعليمات البرمجية ذات الصلة ب DSP مع القرش ووجدت أنني أهدر الكثير من الوقت في تعويم تحويل عدد صحيح:

SInt16 nextInt = nextFloat * 32768.0f + 0.5f;

نظرا لأن جهاز iPhone يبدو أنه يحتوي على معالج مشارك ل Arm11 FP، أتساءل عما إذا كان بإمكاني استبدال التعليمات البرمجية الخاصة بي مع تعليمات FTOSI. هناك بعض توثيق متاح في موقع الذراع، لكن ليس لدي خبرة في التجمع الأمثل في الهواء. هل فعل شخص ما من قبل؟
أعتقد أنني أستطيع مضمنة الرمز

__asm__ volatile

ولكن كيف يمكنني التحقق مما إذا كانت التعليمات متاحة؟
كيف يمكنني تمرير قيمتي في؟

Edit1: كما أشار لويس بالفعل، لقد نسيت أن أذكر أنني جمع "ترجمة للإيجة".

Edit2: كما أريد تحويل تعويم إلى موقع Int16 وليس int غير موقعة، غيرت تعليمات الذراع من FTOUI إلى FTOSI. كان هذا خطأ في المنشور الأصلي.

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

المحلول

قد يكون هذا سؤالا واضحا، ولكن هل أنت متأكد أنك تستهدف الذراع؟ افتراضيا، يقوم iPhone SDK بتجميع جميع التطبيقات للإبهام، والذي يستخدم Program Point Point كل شيء (بما في ذلك التحويل العائم / الدولي).

على أي حال، إذا كان الجهاز يحتوي على VFP Coprocessor لديه التعليمات. يمكنك التحقق مما إذا كان لديك Coprocessor مناسب من خلال قراءة سجل FPSID والتأكد من أنه نموذج مدعوم.

أظن أنه من الآمن افتراض أن جميع الأفيات يدعمونها. من بين أشياء أخرى، لدى مجمع Apple لدعم OPCODE، ويستخدمه LLVM Arm Backend لتحويل الكتابة، مما يعني عندما تدعم Apple في النهاية LLVM على الهاتف، سيقوم برامج التحويل البرمجي بإنشاء تعليمات FTOUI.

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