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

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

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

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

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

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

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

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

Microsoft Windows के लिए समान प्रोग्राम का एक उदाहरण:

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

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

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

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

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

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

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

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

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

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

RDOFF प्रारूप को दृढ़ता से बहिष्कृत किया गया है और इसे NASM 2.15.04 से अक्षम कर दिया गया है।

यह भी देखें

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

बाहरी संबंध

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