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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

आरडीऑफ प्रारूप को दृढ़ता से बहिष्कृत किया गया है और इसे एनएएसएम 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