मैं वर्तमान में compiler लिखने की प्रक्रिया में हूं और मुझे लगता है कि यह एक सभ्य समय सीमा में निष्पादित आउटपुट कोड को प्राप्त करने में कुछ समस्याएं चला रहा है।एक कंपाइलर द्वारा उत्पन्न असेंबली कोड को अनुकूलित करने के लिए कुछ सुझाव क्या हैं?
संकलक का एक संक्षिप्त अवलोकन:
7Basic एक संकलक है कि लक्ष्य वास्तुकला/प्लेटफ़ॉर्म की मशीन कोड में सीधे 7Basic कोड संकलित करने के लिए करना है। वर्तमान में 7 बेसिक x86 असेंबली को स्रोत फ़ाइल प्रदान करता है।
समस्या यह है कि विधानसभा संकलक द्वारा बनाया गया कोड धीमी और अक्षम है।
उदाहरण के लिए, this कोड (जो this असेंबली कोड तक संकलित करता है) the equivalent C code से निष्पादित करने के लिए लगभग 80.47 गुना अधिक समय लेता है। समस्या का
भाग कि संकलक निम्नलिखित की तरह कोड पैदा कर रहा है है:
push eax
push 5000000
pop ebx
pop eax
अधिक तार्किक के बजाय
:
mov ebx,5000000
... जो एक ही बात पूरा करता है।
मेरा प्रश्न है: इस तरह की समस्या से बचने के लिए कुछ तकनीक क्या हैं? पार्सर मूल रूप से अभिव्यक्तियों को पार्स करने के लिए रिकर्सन का उपयोग करता है, इसलिए उत्पन्न कोड इस पर प्रतिबिंबित करता है।
अपने संकलक कमांड लाइन ;-) – hirschhornsalz
+1 @drhirsch LOL – karlphillip
"... एक ** पार मंच ** बेसिक संकलक कि देशी ** Win32 उत्पन्न करता है ** निष्पादनयोग्य।" करने के लिए -O3 जोड़े रुको क्या? –