مع ARM ، تحتاج إلى التفكير في استدعاء الاتفاقية لأن وظيفة مع أكثر من أربع حجج سوف تسربها للتكديس. أجد أنه أكثر أمانًا للاستخدام GCC's __builtin_frame_address.
Built-in Function: void * __builtin_frame_address (unsigned int level)
سؤال
أحتاج إلى ملء جميع مساحة المكدس المتاحة مع حرف محدد لأغراض التنميط.
بادئ ذي بدء ، هل هناك طريقة آمنة للقيام بذلك على Android (ربما بعض الوظائف الخاصة بالمترجمات) في C ++؟ إذا لم يكن الأمر كذلك ، فهل لي أن أفترض أن عنوان المتغير الأول المعلن في وظيفة ما هو "بداية" المكدس "غير المستخدم"؟ إذا لم يكن هناك طريقة للحصول على مؤشر المكدس الحالي ، شيء مثل قيمة ESP على x86؟
المحلول
مع ARM ، تحتاج إلى التفكير في استدعاء الاتفاقية لأن وظيفة مع أكثر من أربع حجج سوف تسربها للتكديس. أجد أنه أكثر أمانًا للاستخدام GCC's __builtin_frame_address.
Built-in Function: void * __builtin_frame_address (unsigned int level)