नेटवाइड असेंबलर

नेटवाइड असेंबलर(एनएएसएम) इंटेल x86 स्थापत्य कला के लिए एक असेंबली भाषा या कोडांतरक और विकोंडातरक है। इसका उपयोग 16-बिट, 32-बिट(IA-32) और 64-बिट(x86-64) प्रोग्राम लिखने के लिए किया जा सकता है। इसे लिनक्स के लिए सबसे लोकप्रिय कोडांतरकों में से एक माना जाता है।

यह मूल रूप से साइमन टाथम द्वारा जूलियन हॉल की सहायता से लिखा गया था।, इसका रखरखाव एच. पीटर एनविन के नेतृत्व वाली एक छोटे समूह द्वारा किया जाता है। यह सरलीकृत (2-क्लॉज) बीएसडी लाइसेंस के नियमों के अंतर्गत जारी ओपेन स्रोत सॉफ्टवेयर है।

सुविधाएँ
एनएएसएम सीओएफएफ, सीएमएफ , a.out निष्पादन योग्य और लिंक करने योग्य प्रारूप (ELF), Mach-O और बाइनरी फ़ाइल (.bin, बाइनरी डिस्क छवि, ऑपरेटिंग सिस्टम को संकलित करने के लिए उपयोग किया जाता है) सहित कई बाइनरी स्वरूपों का उत्पादन कर सकता है, चूंकि स्थिति-स्वतंत्र कोड मात्र ईएलएफ ऑब्जेक्ट फ़ाइलों के लिए समर्थित है। इसका अपना बाइनरी फॉर्मेट भी है जिसे आरडीऑफ(RDOFF) कहा जाता है।

आउटपुट स्वरूपों की विविधता प्रोग्रामों को वस्तुतः किसी भी x86 ऑपरेटिंग सिस्टम (OS) पर पुनः लक्षित करने की अनुमति देती है। यह बूटिंग, रीड ओनली मेमोरी (रोम) छवियों और OS विकास के विभिन्न स्वरूपों में लिखने के लिए उपयोग करने योग्य फ्लैट बाइनरी फ़ाइल भी बना सकता है। यह असेंबली लैंग्वेज या क्रॉस असेंबलर जैसे पावरपीसी और एसपीएआरसी के रूप में गैर-x86 प्लेटफॉर्म पर चल सकता है, चूंकि यह उन मशीनों द्वारा प्रयोग करने योग्य प्रोग्राम उत्पन्न नहीं कर सकता है।

एनएएसएम एटी एंड टी सिंटैक्स के अतिरिक्त इंटेल असेंबली सिंटैक्स के एक संस्करण का उपयोग करता है। यह MASM(एमएएसएम) और संगत कोडांतरकों द्वारा उपयोग किए जाने वाले x86 मेमोरी सेगमेंटेशन अधिभावियों (और संबंधित ASSUME निर्देश) की स्वचालित पीढ़ी जैसी सुविधाओं से भी बचता है।

प्रतिरूप प्रोग्राम
एक हैलो, विश्व! डॉस ऑपरेटिंग सिस्टम के लिए प्रोग्राम:

लिनक्स के लिए एक समकक्ष प्रोग्राम:

माइक्रोसॉफ्ट विंडोज के लिए समान प्रोग्राम का एक उदाहरण:

एप्पल ओएस एक्स के लिए एक 64-बिट प्रोग्राम जो कीस्ट्रोक इनपुट करता है और इसे स्क्रीन पर दिखाता है:

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

विकास
एनएएसएम संस्करण 0.90 अक्टूबर 1996 में जारी किया गया था।

संस्करण 2.00 को 28 नवंबर 2007 को जारी किया गया था, जिसमें x86-64 एक्सटेंशन के लिए समर्थन जोड़ा गया था। विकास संस्करण SourceForge.net पर अपलोड नहीं किए गए हैं, लेकिन प्रोजेक्ट वेब पेज से उपलब्ध बाइनरी स्नैपशॉट के साथ गिटहब में चेक किए गए हैं।

एनएएसएम प्रलेखन के लिए एक खोज इंजन भी उपलब्ध है।

जुलाई 2009 में, संस्करण 2.07 के अनुसार, एनएएसएम को सरलीकृत (2-खंड) बीएसडी लाइसेंस के अंतर्गत जारी किया गया था। पहले, क्योंकि इसे जीएनयू लेसर जनरल पब्लिक लाइसेंस के अंतर्गत लाइसेंस दिया गया था, इसने यास्म(Yasm) के विकास का नेतृत्व किया, जो नए बीएसडी लाइसेंस के तहत एक पूर्ण पुनर्लेखन था। यास्म ने एनएएसएम से पहले x86-64 के लिए समर्थन की प्रस्तुति की। इसने जीएनयू असेंबलर सिंटैक्स के लिए समर्थन भी जोड़ा गया।

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

अक्टूबर 1996 में संस्करण 0.90 जारी होने तक, एनएएसएम ने मात्र फ्लैट-प्रारूप निष्पादन योग्य फ़ाइलों (जैसे, डॉस कॉम फ़ाइलें) के आउटपुट का समर्थन किया। संस्करण 0.90 में, साइमन टैथम ने ऑब्जेक्ट-फ़ाइल आउटपुट इंटरफ़ेस के लिए और मात्र 16-बिट कोड के लिए डॉस .ओबीजे फ़ाइलों के लिए समर्थन जोड़ा।

एनएएसएम में इस प्रकार 32-बिट ऑब्जेक्ट प्रारूप का अभाव था। इस कमी को दूर करने के लिए, और ऑब्जेक्ट-फाइल इंटरफ़ेस सीखने के अभ्यास के रूप में, डेवलपर जूलियन हॉल ने आरडीऑफ के पहले संस्करण को एक साथ रखा, जिसे एनएएसएम संस्करण 0.91 में जारी किया गया था।

इस प्रारंभिक संस्करण के बाद से, आरडीऑफ प्रारूप में एक प्रमुख अद्यतन किया गया है, जिसमें प्रत्येक हेडर रिकॉर्ड पर एक रिकॉर्ड-लंबाई संकेतक जोड़ा गया है, प्रोग्रामों को उन रिकॉर्डों को छोड़ने की अनुमति देना जिनके प्रारूप को वे नहीं पहचानते हैं, और कई खंडों के लिए समर्थन करते हैं; आरडीऑफ1 मात्र तीन खंडों का समर्थन करता है: पाठ(टेक्स्ट), डेटा और बीएसएस (जिसमें गैर-प्रारंभिक डेटा सम्मिलित है)।

आरडीऑफ प्रारूप को दृढ़ता से बहिष्कृत किया गया है और इसे एनएएसएम 2.15.04 से अक्षम कर दिया गया है।

यह भी देखें

 * सभा की भाषा
 * कोडांतरकों की तुलना

बाहरी संबंध

 * Special edition for Win32 and BeOS.
 * A कॉमparison of GAS and NASM at IBM
 * : a converter between the source format of the assemblers NASM and GAS
 * A कॉमparison of GAS and NASM at IBM
 * : a converter between the source format of the assemblers NASM and GAS