C ++: قائمة ASM Clobber
-
28-09-2019 - |
سؤال
في G ++ ، يمكن تحديد قوائم Clobber لـ ASM ، على سبيل المثال:
asm ("somecode" : : "r1", "r2", "r3");
مما يعني أن رمز ASM يغير سجلات R1 ، R2 ، R3.
الآن ، تعتمد سجلاتي المتغيرة على معلمة قالب n
(ال asm
الكتل داخل وظيفة قالب) ، وسجلات R1 ، ... ، سيتم تغيير RN. كيف يمكنني التعبير عن ذلك؟
المحلول
كم عدد أبراج التسجيل المختلفة التي تواجهها؟ إذا لم يكن الكثير ، يمكنك توفير تطبيق محدد لكل منهما. ((تخصص قالب)
لأنني ، ألقي القبض على أنه لا يوجد إمكانية لإنشاء "بيانات تمثل".
نصائح أخرى
يمكنك تعيين كل السجل الذي يمكنك استخدامه في قائمة Clobber ، بحيث لا يستخدمها المترجم لتخزين قيمة المتغير ؛ أعلم أن هذا أبطأ قليلاً ، ولكن إذا لم تكن بحاجة إلى تحسين عالي جدًا ، فسيعمل.
لا تنتمي إلى StackOverflow