2010-03-11 15 views
6

यदि आप कंपाइलर का एक नया संस्करण संकलित करते हैं, तो आप इसे कितनी बार पुन: संकलित कर सकते हैं?संकलक संकलित - कितनी बार?

पहला: पुराने संस्करण [0] का उपयोग करके कंपाइलर [1] के नए संस्करण को संकलित करें।

दूसरा: नए अनुकूलित [1] का उपयोग करके नए संस्करण [2] का उपयोग करके नए अनुकूलन को लागू करने और बाइनरी में बग ठीक करने के लिए पुराने [0] कंपाइलर में मौजूद नहीं है।

अब तीसरा? [2] का उपयोग करके किसी भी संभावित बग को हटाने के लिए [2] का उपयोग करके फिर से संकलित करें [0] में बग्स [0] द्वारा दोषपूर्ण संकलन के परिणामस्वरूप ... [?

... लेकिन यदि आप पागल हो जाते हैं, तो [0] [1] में [1] [1] द्वारा शुरू की गई बग्स कुछ हद तक छोटी हो सकती हैं ...?

क्या बाहर जा रहा है [2] बिल्कुल समझ में आता है?

उत्तर

6

संकलन n संकलन के परिणाम n - 1 के परिणाम के समान होने पर मैं रुक जाऊंगा; उस समय आप स्थिर स्थिति तक पहुंच गए हैं।

+0

लॉल निश्चित बिंदु! :) – Dacav

+1

यदि यह तीसरे संस्करण पर नहीं होता है, तो शायद एक बग है। नए कंपाइलर को उसी स्रोत को अपने स्रोतों पर उत्पादित करना चाहिए, चाहे वह संकलित किए गए संस्करण के बावजूद। –

+0

@Rafal: सहमत। @SF: हाँ, तुलना बात की इस प्रकार की संभाल करने की आवश्यकता होगी; नहीं एक असामान्य आवश्यकता। –

3

बूटस्ट्रैपिंग ओकैमल के लिए निर्देश आपको until you have reached a fixpoint, जारी रखने के लिए आमंत्रित करते हैं यदि आप चाहते हैं। नए कंपाइलर को मानते हुए केवल बग को ठीक करता है और नए परिचय नहीं देता है, आपको स्वयं को प्रेरित करने वाले कंपाइलर बग गायब होने के लिए कई बार बूटस्ट्रैप की आवश्यकता हो सकती है।

आप बग के बिना फिक्सपॉइंट तक पहुंच सकते हैं, जिसे आप निश्चित करने के लिए ठीक करने का प्रयास कर रहे थे, क्योंकि बूटस्ट्रैप कंपाइलर में बग की उपस्थिति बूटस्ट्रैप किए गए संस्करण (एक अनैच्छिक Ken Thompson) में इसे बरकरार रखती है। यह ओकैमल के इतिहास में कम से कम एक बार हुआ था। जब उन्होंने यह देखा, डेवलपर्स ने एक सही कंपाइलर प्राप्त करने के लिए असेंबली कोड को हाथ से तय किया जो सही स्रोत में सही स्रोत का अनुवाद करता है।

1

आमतौर पर आप एक बार मानक पुस्तकालय withouth संकलन और संकलक की एक आंशिक रूप से काम कर रहे संस्करण मिलना चाहिए। इसके बाद आप मानक पुस्तकालय समर्थन के साथ पुन: संयोजित करने की जरूरत है: यह आप आगे कार्यक्षमता (printf जाँच और libgcc सामान की तरह) प्राप्त करने के लिए सक्षम बनाता है।

मुझे बाद में पुनर्मूल्यांकन के बारे में पता नहीं था, लेकिन जानकारी के लिए धन्यवाद :)

संबंधित मुद्दे