MxCsr

تتضمن حالة السجل أيضاً MxCsr. اصطلاح الاستدعاء يقسم هذا السجل إلى جزء متغير وجزء غير متغير. يتكون الجزء المتغير من 6 إشارات حالة MXCSR [0: 5] ، بينما يعتبر الجزء المتبقي من السجل MXCSR [6: 15] غير متغير.

تم تعيين الجزء غير المتغير إلى القيم القياسية التالية في بداية تنفيذ البرنامج:

MXCSR[6]         : Denormals are zeros - 0
MXCSR[7:12]      : Exception masks all 1's (all exceptions masked)
MXCSR[13:14]   : Rounding  control - 0 (round to nearest)
MXCSR[15]      : Flush to zero for masked underflow - 0 (off)

يجب على المستدعَى الذى يقوم بتعديل أي من الحقول غير المتغيرة ضمن MXCSR استعادتهم قبل الرجوع إلى المستدعِى. علاوة على ذلك، المستدعِى الذى قام بتعديل أي من هذه الحقول يجب أن يعيدها إلى قيمها القياسية قبل استدعاء المستدعَى ما لم يتم الاتفاق على أن المستدعَى يتوقع القيم التى تم تعديلها.

هناك استثناءان للقواعد فيما يتعلق بكون إشارات التحكم غير مؤقتة:

  • في الدالات حيث الغرض الموثّق للدالة المعطاة هو تعديل الإشارات MxCsr الغير المؤقتة.

  • عندما يبرهن بشكل صحيح على أن انتهاك هذه القواعد يتسبب في برامج "تتصرف/ تؤدى لنفس المعنى" مثل برنامج لا تنتهك فيه هذه القواعد، على سبيل المثال، خلال تحليل البرنامج ككل.

لا يمكن إجراء افتراضات حول حالة الجزء المتغير بـ MXCSR عبر حد دالة ، ما لم يبين في وثائق الدالة بشكل خاص.

راجع أيضًا:

المرجع

اصطلاحات استدعاء