سؤال

في G ++ ، يمكن تحديد قوائم Clobber لـ ASM ، على سبيل المثال:

asm ("somecode" : : "r1", "r2", "r3");

مما يعني أن رمز ASM يغير سجلات R1 ، R2 ، R3.

الآن ، تعتمد سجلاتي المتغيرة على معلمة قالب n (ال asm الكتل داخل وظيفة قالب) ، وسجلات R1 ، ... ، سيتم تغيير RN. كيف يمكنني التعبير عن ذلك؟

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

المحلول

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

لأنني ، ألقي القبض على أنه لا يوجد إمكانية لإنشاء "بيانات تمثل".

نصائح أخرى

يمكنك تعيين كل السجل الذي يمكنك استخدامه في قائمة Clobber ، بحيث لا يستخدمها المترجم لتخزين قيمة المتغير ؛ أعلم أن هذا أبطأ قليلاً ، ولكن إذا لم تكن بحاجة إلى تحسين عالي جدًا ، فسيعمل.

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