سؤال

عند استخدام ما يلي لحساب PI في Fortran77 ، هل سيقوم المترجم بتقييم هذه القيمة أم أنه سيتم تقييمه في وقت التشغيل؟

PI = 4.d0*datan (1.d0)

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

المحلول

تعديل: يعتمد على المترجم: انظر تحرير بلدي أدناه. تحرير نهاية

أنا الثاني اقتراح ميك شارب بأنه سيتم تقييمه في وقت التشغيل. فقط بدافع الفضول ، جمعت PI=4.D0*DATAN(1.D0) مع برنامج التحويل البرمجي FTN77 من Silverfrost ونظرت إلى الثنائي المولد. الجزء ذي الصلة يبدو هكذا:

fld1                 ; push 1.D0 onto the FPU register stack
call    ATAN_X
fmul    dbl_404000   ; multiply by 4.D0

في الواقع ، لا يوجد انكماش مترجم هنا.

هذا بالطبع قد يكون مختلفًا مع برنامج مترجم آخر (على سبيل المثال G77). تعديل: على ما يبدو ، مع G77 (الواجهة الأمامية FORTRAN77 لـ GCC) من الممكن (وتمكينها افتراضيًا) استخدام GCC's وظيفة ATAN مدمجة ل طيّق تلقائي PI=4.D0*DATAN(1.D0) في ثابت. تحرير نهاية

نصائح أخرى

عادة ما يتم تقييم المكالمات إلى وظائف الرياضيات في وقت التشغيل. بعد كل شيء ، لا يوجد شيء يمنعك من كتابة وظائف الرياضيات الخاصة بك. لن يكون هذا ممكنًا إذا تم تقييمها في وقت الترجمة.

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