2009-04-16 10 views
5

मेरा विश्वविद्यालय विधानसभा प्रोग्रामिंग (x86 और एमआईपी) वर्ग में एक को समाप्त करने आ रहा है।बड़े पैमाने पर असेंबली भाषा परियोजनाओं का प्रबंधन करने के कुछ तरीके क्या हैं?

मैंने असेंबली में अपने काम का पूरी तरह से आनंद लिया है और मैं वास्तव में इसके साथ काम करना जारी रखना चाहूंगा। आपको लगता है कि सब कुछ करने के लिए मुझे एक ड्रैग होगा लेकिन मुझे पता चला है कि पारदर्शिता का स्तर है कि मुझे उच्च स्तर की भाषाओं के साथ नहीं मिलता है।

चीजें आम तौर पर काम करती हैं कि मैं उन्हें कैसे उम्मीद करूंगा, क्योंकि मैंने उनके लिए मशीन कोड निष्पादित किया था। कोई जादू नहीं है

हालांकि, स्कूल में सबसे लंबे समय तक विधानसभा कार्यक्रम मैंने लिखा लंबाई में शायद 2-3 पृष्ठों था।

मैं हाल ही में रोलर कोस्टर टाइकून के बारे में पढ़ा एक भी डेवलपर द्वारा लिखा जा रहा, in assembly.
alt text http://i.d.com.com/i/dl/media/dlimage/15/06/92/150692_large.jpeg

मैं कठिनाई कल्पना कैसे किसी को विधानसभा में इतनी बड़ी परियोजना बनाए रख सकता है।

अभी मैं 2-3 पेज असेंबली कार्यक्रमों से थोड़ा अधिक पैमाने पर छलांग लगाने में संघर्ष कर रहा हूं। यहां तक ​​कि मेरे टीआई -83 कैलकुलेटर पर भी लोगों ने असेंबली में मारियो/ज़ेल्डा क्लोन लिखे हैं जो बेहद जटिल होनी चाहिए!

बड़ी x86 असेंबली परियोजनाओं के प्रबंधन के लिए कुछ अच्छे उपकरण, आईडीई और विधियां होनी चाहिए जो इसे कम से कम कुछ हद तक बनाए रखने योग्य बनाती हैं।

वे क्या हैं?

उत्तर

2

मैं लोगों कि कोडांतरक (नहीं इंटेल) के साथ काम पता है। उन्होंने एक व्यापक मैक्रो लाइब्रेरी बनाई है ताकि वे इसका उपयोग लगभग उच्च स्तर की भाषा के रूप में कर सकें।

कुछ बनाने के लिए lika एक मैक्रो पुस्तकालय, सरल शुरू करते हैं। समूह द्वारा अक्सर एक मैक्रो में निर्माण का उपयोग किया जाता है। आखिरकार आप अधिक जटिल कार्यक्षमता बनाने में सक्षम होंगे।

2

वास्तव में आपके प्रश्न का उत्तर नहीं है, लेकिन कई वास्तविक दुनिया परिदृश्यों में, अनुप्रयोगों को उस भाषा के लिए सामान्य मुहावरों का उपयोग करके उच्च भाषा में लिखा जाता है, और केवल कुछ असेंबली भाषा का उपयोग करते हैं जहां प्रदर्शन या हार्डवेयर की आवश्यकता होती है। यह शायद वास्तविक परियोजनाओं के लिए केवल समझदार दृष्टिकोण है, क्योंकि विधानसभा भाषा केवल, अन्य भाषाओं के रूप में के रूप में उत्पादक नहीं है प्रत्येक घंटे यह प्रोग्रामिंग खर्च के लिए अधिक करने के लिए कंप्यूटर के लिए हो रही के संदर्भ में है।

कहा जा रहा है कि, किसी अन्य भाषा में किसी प्रोजेक्ट के प्रबंधन के लिए सभी टूल और तकनीक असेंबली भाषा के लिए समान रूप से लागू होती हैं। स्रोत नियंत्रण, टीडीडी, परियोजना विनिर्देश, पहचानकर्ताओं के लिए सार्थक नाम, चिंताओं का पृथक्करण, ऑब्जेक्ट उन्मुख डिजाइन पैटर्न (आप ऑब्जेक्ट ओरिएंटेड डिज़ाइन के बिना ऑब्जेक्ट ओरिएंटेड डिज़ाइन कर सकते हैं) सभी असेंबली भाषा के लिए समान रूप से लागू होते हैं क्योंकि यह सी # या PHP

+0

"पहचानकर्ता के लिए सार्थक नाम" जब तक क्या एसेम्बली भाषा है की मेरी समझ तरह से बंद (यह बहुत अच्छी तरह से हो सकता है) तुम सिर्फ स्मृति स्थल और सीपीयू का उल्लेख नहीं है है सीधे पंजीकृत करता है? आप उसमें से सार्थक नाम कैसे प्राप्त करते हैं? – Davy8

+0

स्मृति पते का उपयोग करना दुर्लभ है। आम तौर पर कोडांतरक उन्हें चर को बांधता है। –

+0

आह, मुझे पता नहीं था कि आप असेंबली – Davy8

1
पर करता है

मैंने हमेशा उच्च स्तर की भाषाओं में ऐसा किया है। इसे मॉड्यूल में लिखें जो रनटाइम बनाने के लिए एक साथ जुड़े हुए हैं।

2

एकमात्र आधुनिक परियोजना पूरी तरह से असेंबली में लिखी गई है जो मुझे पता है कि FASM (मेरा पसंदीदा असेंबलर) है।

कुछ असेंबलर उच्च स्तरीय संरचनाओं का समर्थन करते हैं, और यदि मैक्रो इंजन अच्छा है, तो आप अपना खुद का लिख ​​सकते हैं। मुझे व्यक्तिगत रूप से यह बेकार लगता है; अगर मैं उच्च स्तरीय संरचना चाहता हूं और समझता हूं कि मैं क्या करता हूं, तो मैं सी या सी ++ का उपयोग करता हूं। (मुझे नहीं लगता कि वे बड़ी परियोजनाओं के प्रबंधन के लिए अच्छी भाषाएं हैं, हालांकि)।

मैं आवश्यकता होने पर या सीखने के लिए केवल असेंबली का उपयोग करता हूं।

आप, विधानसभा में एक परियोजना लिखने ध्यान रखें कि करना चाहते हैं:,

  • शायद कई लोग हैं जो अपनी परियोजना के साथ मदद करना चाहते हैं नहीं होगा भी वे यह दिलचस्प लगता है। अगर आप किसी को समझने की उम्मीद करते हैं तो असेंबली और आपके कोड जैसे कुछ लोगों को बहुत अच्छी तरह से टिप्पणी की जानी चाहिए।
  • असेंबली पोर्टेबल नहीं है। यहां तक ​​कि 32-बिट पीसी से 64-बिट तक स्थानांतरित करने के लिए आपको मूल रूप से सबकुछ फिर से लिखना होगा।
  • "असेंबली तेज है" तर्क अब और नहीं पकड़ता है।
5

बड़े पैमाने पर विधानसभा कार्यक्रमों बस किसी भी अन्य कार्यक्रम की तरह प्रबंधित कर रहे हैं को शामिल किया गया लिखने के लिए प्रयोग किया जाता का वर्णन - अच्छी तरह से स्पष्ट के साथ कार्यात्मक ब्लॉक विभाजित इंटरफेस। चूंकि आप असेंबली में काम कर रहे हैं, इसलिए आपके इंटरफेस रजिस्टर फ़ाइल या स्टैक पर चीजों तक सीमित होंगे। वास्तव में यह वास्तव में कार्यान्वयन से पहले योजना योजना बनाने के बारे में है। आपको क्या लिखना है और इसे कैसे लिखना है इसके बारे में आपको क्रिस्टल स्पष्ट होना चाहिए।

कहा जा रहा है कि, यदि आप असेंबली पसंद करते हैं, तो वास्तव में असेंबली कोड लिखने के बिना अपने जुनून में शामिल होने का एक और तरीका है - आप सी या सी ++ में लिख सकते हैं और देख सकते हैं कि कोड असेंबली कैसे संकलित करता है। फिर, एक ही चीज़ को एक अलग तरीके से लिखें और समझें कि यह असेंबली को कैसे बदलता है। नतीजतन, आप जल्द ही एक कंपाइलर की तरह सोचने और अत्यधिक इष्टतम कोड लिखने में सक्षम हो जाएगा।

किसी भी तरह से, यह जानकर कि असेंबली में चीजें कैसे काम करती हैं अंत में आपको एक बेहतर प्रोग्रामर बना देगा।

3

मैक्रोज़, फ़ंक्शंस और लाइब्रेरीज़। स्क्रैच से अपना खुद का विकास करने में सालों लगते हैं, इसलिए x86 असेंबलर संसाधनों की खोज करें और दूसरों पर दुबला रहें - अभी भी कई लोग पीसी के लिए सक्रिय असेंबली विकास कर रहे हैं।

एक विधानसभा समुदाय के सक्रिय सदस्य स्टीव गिब्सन, वह विधानसभा प्रोग्रामिंग यहाँ के लिए अच्छा संसाधनों के लिए लिंक की एक पूरी गुच्छा है:

http://www.grc.com/smgassembly.htm

2

क्या पहले से ही उल्लेख किया गया है के शीर्ष पर, मैं चाहिए literate programming का उल्लेख करें; मैंने एक आवेदन लिखा था जो 20 केएलओसीसी एआरएम असेंबली के आदेश पर था (बहुत बड़ा नहीं, लेकिन महत्वहीन नहीं), और मुझे noweb के साथ कोड को बेहद सहायक बनाने के लिए मिला।

यह मैं छोटे टुकड़ों में वैचारिक कोड को तोड़ने के लिए अनुमति दी, तब भी जब कई टुकड़े वास्तव में/एक साथ जोड़ा जा करने के लिए प्रदर्शन कारणों से unrolled/वगैरह था। यह भी यह बहुत आसान है अन्य प्रोग्रामर को समझने के लिए मैं क्या लिखा था, के लिए बने विशेष रूप से कारण हैं जिनकी वजह मैं कुछ सूक्ष्म निर्णय (उदाहरण के लिए, निर्णय लेने से जो संकार्य पहले एक गुणा ऑपरेंड के उम्मीद आकार के आधार पर में जाना चाहिए) बनाया है।

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