HeadlinesBriefing HeadlinesBriefing.com

Rat का सुधरा रजिस्टर एलोकेटर पंक्तियाँ कम करता है और बेहतर कोड बनाता है

Hacker News •
×

2026 अक्टूबर 7 — rat एक छोटा कंपाइलर बैकएंड है जिसमें आधा कामकाज C99 फ्रंटएंड है और यह x86-64 कोड जनरेटर उपयोग करता है जो वर्चुअल रजिस्टर (vregs) को शारीरिक रजिस्टर या स्टैक स्लॉट में मैप करता है। पुराना लीनियर-स्कैन एलोकेटर 1392 पंक्तियों तक बढ़ गया, जिसने प्राथमिकता बिन-पैकिंग एलोकेटर को महज 584 पंक्तियों में लिखने को प्रेरित किया। यह नया एलोकेटर महत्व के अनुसार लाइव रेंजों को दौर करता है और हर एक को पहले उपयुक्त रजिस्टर में रखता है, LLVM के ग्रीडी एलोकेटर की तरह लेकिन सरल। एक मान अपनी लिखाई से लेकर अंतिम पठन तक लाइव रहता है; दो मान केवल तब एक रजिस्टर साझा करते हैं जब वे कभी एक साथ लाइव न हों। बहुत से मान लाइव होने पर कुछ मेमोरी में स्पिल हो जाते हैं। कॉलिंग कन्वेंशन में कॉल-सेव्ड रजिस्टर (rbx rbp r12-r15) संरक्षित रखने की आवश्यकता होती है जबकि कॉलर-सेव्ड रजिस्टर बदले जा सकते हैं। जैसा कि दिखाया गया, फंक्शन h कॉल के दौरान y को लाइव रखता है बिना कॉल-सेव्ड रजिस्टर रखने की स्पष्ट लॉजिक के। एलोकेटर पांच चरणों में चलता है: लाइव रेंज, फिक्स्ड रजिस्टर, कोएलेसिंग, रजिस्टर चुनना और स्पिलिंग। हर बंडल अपनी पूरी जिंदगी अपना रजिस्टर या स्टैक स्लॉट रखता है, कभी भी एविक्ट नहीं करता या रेंज नहीं तोड़ता।

स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित