बेसिक असेंबली लैंग्वेज

From Vigyanwiki
Revision as of 16:09, 22 August 2023 by Manidh (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
नेटिव असेंबली लैंग्वेज
Paradigmअसेंबली लैंग्वेज
Developerआईबीएम
पहली प्रस्तुति1964
ओएसआईबीएम बेसिक प्रोग्रामिंग सपोर्ट, बेसिक ऑपरेटिंग सिस्टम/360
लाइसेंसfree
हाई लेवल असेम्बलर
Paradigmअसेंबली लैंग्वेज
Developerआईबीएम
पहली प्रस्तुति1992
Stable release
संस्करण 1 रिलीज 6
ओएसआईबीएम एमवीएस/ईएसए और सक्सेसर, वीएम/ईएसए और सक्सेसर, वीएसई/ईएसए और सक्सेसर
लाइसेंसस्वामित्व
वेबसाइटhttps://www.ibm.com/products/high-level-assembler-and-toolkit-feature
Major implementations
हाई लेवल असेम्बलर

बेसिक असेंबली लैंग्वेज (BAL) एक अत्यंत प्रतिबंधित असेंबली लैंग्वेज है, जिसे 1964 में पेश किया गया था और इसका उपयोग IBM सिस्टम/360 मेनफ्रेम सिस्टम पर केवल 8 KB मुख्य मेमोरी के साथ किया जाता था, और इनपुट/आउटपुट के लिए केवल एक कार्ड रीडर, एक कार्ड पंच और एक प्रिंटर आईबीएम बेसिक प्रोग्रामिंग सपोर्ट (BPS/360) के भाग के रूप में होता था। BAL के लिए बेसिक असेंबलर बेसिक ऑपरेटिंग सिस्टम/360 (BOS/360) के भाग के रूप में भी उपलब्ध था।

कुछ लोगों ने अन्य असेंबलर लैंग्वेज को संदर्भित करने के लिए BAL शब्द का उपयोग किया, ठीक उसी तरह जैसे उन्होंने सामान्य उत्पादों को संदर्भित करने के लिए कोडक और ज़ेरॉक्स जैसे ट्रेडमार्क शब्दों का उपयोग किया; यह प्रथा ख़त्म हो गई है.

IBM Z के माध्यम से सिस्टम/360 के लिए अन्य ऑपरेटिंग सिस्टम पर असेंबलर, स्पेरी कॉर्पोरेशन द्वारा बनाए गए UNIVAC सीरीज 90 मेनफ्रेम के लिए, और वर्तमान में फुजित्सु द्वारा बनाए गए BS2000 मेनफ्रेम के लिए, इसके सिंटैक्स को विरासत में मिला और बढ़ाया। नवीनतम व्युत्पन्न लैंग्वेज को IBM हाई-लेवल असेंबलर (HLASM) के रूप में जाना जाता है। असेंबलरों के इस समहू का उपयोग करने वाले प्रोग्रामर उन्हें ALC, (असेंबली लैंग्वेज कोडिंग के लिए), या बस "असेंबलर" के रूप में भी संदर्भित करते हैं।

सामान्य विशेषताएँ

चूँकि यह एक असेंबली लैंग्वेज है, BAL IBM मेनफ्रेम आर्किटेक्चर के मूल निर्देश सेट का उपयोग करता है, जिसमें System/360, System/370, System/370-XA, ESA/370, ESA/390, और z/आर्किटेक्चर सम्मिलित हैं।

मशीन निर्देशों की सरलता का अर्थ है कि असेंबलर में लिखे गए प्रोग्राम का स्रोत कोड सामान्यतः COBOL या फोरट्रान के समकक्ष प्रोग्राम की तुलना में अधिक लंबा होगा। अतीत में, हाथ से कोडित असेंबलर कार्यक्रमों की गति को प्रायः इस कमी को पूरा करने के लिए महसूस किया जाता था, लेकिन ऑप्टिमाइज़िंग कंपाइलर, मेनफ्रेम के लिए C और अन्य अग्रिमों के आगमन के साथ, असेंबलर ने अपनी बहुत सारी अपील खो दी है। हालाँकि, आईबीएम असेंबलर को अपग्रेड करना जारी रखता है, और इसका उपयोग अभी भी तब किया जाता है जब गति या बहुत अच्छे नियंत्रण की आवश्यकता सर्वोपरि होती है। हालाँकि, BAL के सभी आईबीएम उत्तराधिकारियों में एक परिष्कृत मैक्रो सुविधा सम्मिलित है जो बहुत अधिक कॉम्पैक्ट स्रोत कोड लिखने की अनुमति देती है।

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

असेंबलर स्टेटमेंट फॉर्मेट

1970 के दशक में आईबीएम 370 असेंबली लैंग्वेज के उपयोग के दौरान कीपंच कार्ड और एक मुद्रित असेंबली सूची आम थी

असेंबलर लैंग्वेज स्टेटमेंट का प्रारूप 80-कॉलम वाले पंच कार्ड के लेआउट को दर्शाता है, हालांकि क्रमिक संस्करणों ने अधिकांश प्रतिबंधों में ढील दी है।

वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया।

  • वैकल्पिक स्टेटमेंट लेबल या नाम एक स्ट्रिंग अल्फ़ान्यूमेरिक वर्ण है जो कॉलम 1 से प्रारम्भ होता है। पहला वर्ण वर्णानुक्रमिक होना चाहिए। बाद के संस्करणों ने लेबल में उपयोग किए गए कानूनी वर्णों में @, #, $ और _ जोड़े, और आकार को प्रारंभिक छह से बढ़ाकर आठ वर्णों तक, फिर लगभग असीमित लंबाई तक बढ़ा दिया।
  • ऑपरेशन कोड या निमोनिक कॉलम 1 के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जिसे स्टेटमेंट लेबल से एक रिक्त स्थान से अलग किया गया है। ऑपरेशन कोड केवल एक मशीन निर्देश होगा (मैक्रोज़ उपलब्ध नहीं थे), जिससे यह सामान्यतः 1, 2, 3, या शायद ही कभी 4 अक्षर बन जाता है। ऑपरेशन कोड को आठ वर्णों तक, फिर बाद में प्रभावी रूप से असीमित लंबाई तक बढ़ाने के लिए बढ़ाया गया था।
  • ऑपरेंड फ़ील्ड ऑपरेशन कोड के दाईं ओर किसी भी कॉलम में प्रारम्भ हो सकता है, जो ऑपरेशन कोड से कम से कम एक रिक्त स्थान से अलग होता है। वर्ण स्थिरांक को छोड़कर ऑपरेंड में रिक्त स्थान अमान्य हैं। एक या अधिक ऑपरेंड से युक्त ऑपरेंड फ़ील्ड, ऑपरेशन कोड के आधार पर वैकल्पिक है।
  • वैकल्पिक टिप्पणियाँ ऑपरेंड फ़ील्ड के दाईं ओर कम से कम एक रिक्त स्थान से अलग दिखाई दे सकती हैं।
  • बेसिक असेंबली लैंग्वेज स्टेटमेंट को जारी रखने की अनुमति नहीं देती है। असेंबलर के बाद के संस्करणों में जारी स्टेटमेंट के कॉलम 72 में किसी भी गैर-रिक्त वर्ण की उपस्थिति से निरंतरता का संकेत मिलता है। बेसिक असेंबली लैंग्वेज के लिए आवश्यक है कि कॉलम 72 खाली रहे।
  • एक पूर्ण-कार्ड टिप्पणी को कॉलम 1 में तारांकन चिह्न (*) द्वारा दर्शाया गया है।
  • कार्ड कॉलम 73-80, जिसे पहचान-अनुक्रम फ़ील्ड कहा जाता है, प्रोग्रामर द्वारा किसी भी उद्देश्य के लिए उपयोग किया जा सकता है, लेकिन सामान्यतः इसमें अव्यवस्थित कार्ड डेक का सहारा लेने के लिए अनुक्रम संख्याएं होती हैं।

बेसिक असेंबली लैंग्वेज कॉलम 25 से प्रारम्भ होने वाले स्टेटमेंट के साथ एक वैकल्पिक स्टेटमेंट फॉर्मेट की भी अनुमति देती है, जिससे असेंबल किए गए निर्देश को कॉलम 1 से प्रारम्भ होने वाले उसी कार्ड में पंच किया जा सकता है। यह विकल्प असेंबलर के बाद के संस्करणों में जारी नहीं रखा गया था।

निर्देशों के प्रकार

असेंबलर में लिखे गए प्रोग्राम के सोर्स कोड में तीन मुख्य प्रकार के निर्देश पाए जाते हैं।

असेंबलर निर्देश

असेंबलर निर्देश, जिन्हें कभी-कभी अन्य प्रणालियों पर निर्देश, छद्म संचालन या छद्मऑप्स भी कहा जाता है, असेंबलर से कोड जनरेशन प्रक्रिया के दौरान विभिन्न संचालन करने के लिए अनुरोध हैं। उदाहरण के लिए, CSECT का अर्थ है "यहां कोड का एक अनुभाग प्रारम्भ करें"; DCऑब्जेक्ट कोड में रखे जाने वाले एक स्थिरांक को परिभाषित करता है।

अधिक महत्वपूर्ण असेंबलर निर्देशों में से एक USING है, जो S/360 आर्किटेक्चर के संक्षिप्त एड्रेसिंग का समर्थन करता है। यह असेंबलर को यह निर्धारित करने में मार्गदर्शन करता है कि उसे किसी सापेक्ष पते के लिए किस आधार रजिस्टर और ऑफसेट का उपयोग करना चाहिए। BAL में, यह फॉर्म तक ही सीमित था

         USING base,reg-1,...,reg-n

मशीन निर्देश (मनमोनिक)

मशीन अनुदेशों के साथ एक-से-एक संबंध होता है। पूर्ण स्मरणीय अनुदेश सेट प्रत्येक अनुदेश सेट के लिए संचालन के सिद्धांत[1] मैनुअल में वर्णित है। उदाहरण:

 * This is a comment line
 * Load the fullword integer stored at the
 * location labeled 'ZIGGY' into general register 3:
       L     3,ZIGGY
       SLA   4,5             shift the value in general register 4 left by 5 bits
       MVC   TARGET,SOURCE   move characters from location 'SOURCE' to 'TARGET'
       AP    COUNT,=P'1'     add 1 to value in memory location 'COUNT' (packed decimal format)
       B     NEXT            unconditional branch to label 'NEXT'
 HERE  EQU   *               This is a label
       CLC   TARGET,=C'ADDRESS'  Compare memory location 'TARGET' to string 'ADDRESS'
       BE    THERE               branch if equal to program label 'THERE'

सामान्यतः स्वीकृत मानकों में, हालांकि किसी भी तरह से अनिवार्य नहीं है, इसमें निमोनिक्स के साथ सामान्य-उद्देश्य रजिस्टरों की पहचान सम्मिलित है। कुछ अन्य प्रणालियों, जैसे कि X86 असेंबली लैंग्वेज, के लिए असेंबलरों के विपरीत, रजिस्टर निमोनिक्स आरक्षित प्रतीक नहीं हैं, बल्कि प्रोग्राम में कहीं और EQU स्टेटमेंट के माध्यम से परिभाषित किए जाते हैं। यह असेंबलर लैंग्वेज प्रोग्राम की पठनीयता में सुधार करता है और रजिस्टर उपयोग का क्रॉस-रेफरेंस प्रदान करता है। इस प्रकार सामान्यतः आप एक असेंबलर प्रोग्राम में निम्नलिखित देख सकते हैं:

 R3    EQU  3
       ...
       L    R3,ZIGGY

कॉल के लिए कुछ उल्लेखनीय अनुदेश निमोनिक्स BALR[lower-alpha 1] हैं, जो एक रजिस्टर में रिटर्न एड्रेस और कंडीशन कोड को संग्रहीत करते हैं, SVC,[lower-alpha 2] DIAG,[lower-alpha 3] और ZAP।[2] उत्तरार्द्ध ने छद्म नाम WAMOZART का उपयोग करके एक प्रोग्रामर द्वारा SuperZAP,  cf. फ्री ऑन-लाइन कंप्यूटिंग शब्दकोश पर सुपरज़ैप उपयोगिता के नाम को प्रेरित किया था।

सिस्टम/360 मशीन निर्देश एक, दो, या तीन आधे शब्द लंबे (दो से 6 बाइट्स) हैं। मूल रूप से चार अनुदेश प्रारूप थे, जिन्हें ऑपरेशन कोड फ़ील्ड के पहले दो बिट्स द्वारा निर्दिष्ट किया गया था; ज़ेड/आर्किटेक्चर ने अतिरिक्त प्रारूप जोड़े।

मैक्रोज़ और सशर्त असेंबली

बेसिक असेम्बलर लैंग्वेज मैक्रोज़ का समर्थन नहीं करती. बाद के असेंबलर संस्करण प्रोग्रामर को निर्देशों को मैक्रोज़ में एक साथ समूहित करने और उन्हें एक लाइब्रेरी में जोड़ने की अनुमति देते हैं, जिसे बाद में अन्य कार्यक्रमों में लागू किया जा सकता है, सामान्यतः सी और संबंधित लैंग्वेज में प्रीप्रोसेसर सुविधाओं जैसे मापदंडों के साथ। मैक्रोज़ में सशर्त असेंबलर निर्देश सम्मिलित हो सकते हैं, जैसे कि AIF (एक 'यदि' निर्माण), जिसका उपयोग चुने हुए मापदंडों के अनुसार अलग-अलग कोड उत्पन्न करने के लिए किया जाता है। यह इस असेंबलर की स्थूल सुविधा को बहुत शक्तिशाली बनाता है। जबकि C में मल्टीलाइन मैक्रोज़ एक अपवाद हैं, असेंबलर में मैक्रो परिभाषाएँ आसानी से सैकड़ों पंक्तियाँ हो सकती हैं।

ऑपरेटिंग सिस्टम मैक्रोज़

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

ये मैक्रोज़ ऑपरेटिंग सिस्टम पर निर्भर हैं; कई उच्च स्तरीय लैंग्वेज के विपरीत, आईबीएम मेनफ्रेम असेंबली भाषाएं मेमोरी आवंटित करने, I/O संचालन करने आदि के लिए ऑपरेटिंग-सिस्टम-स्वतंत्र स्टेटमेंट या लाइब्रेरी प्रदान नहीं करती हैं, और विभिन्न IBM मेनफ़्रेम ऑपरेटिंग सिस्टम सिस्टम सेवा स्तर पर संगत नहीं हैं। उदाहरण के लिए, अनुक्रमिक फ़ाइल लिखने को z/OS और z/VSE में अलग-अलग तरीके से कोड किया जाएगा।

उदाहरण

निम्नलिखित अंश दिखाता है कि "If SEX = 'M' है, तो मेल में 1 जोड़ें; अन्यथा, फीमेल में 1 जोड़ें" असेंबलर में कैसे निष्पादित किया जाएगा।

          CLI   SEX,C'M'       Male?
          BNE   IS_FEM         If not, branch around
          L     7,MALES        Load current value of MALES into register 7
          LA    7,1(7)        add 1 
          ST    7,MALES        store back the result
          B     GO_ON          Finished with this portion
 IS_FEM   EQU   *              A label
          L     7,FEMALES      Load current value in FEMALES into register 7 
          LA    7,1(7)         add 1 
          ST    7,FEMALES      store back the result
 GO_ON    EQU   *              - rest of program -
 *
 MALES    DC    F'0'           Counter for MALES (initially=0)
 FEMALES  DC    F'0'           Counter for FEMALES (initially=0)

निम्नलिखित सर्वव्यापी हैलो वर्ल्ड प्रोग्राम है, और आईबीएम ऑपरेटिंग सिस्टम जैसे OS/VS1 या MVS के तहत निष्पादित करते हुए, ऑपरेटर के कंसोल पर 'हैलो वर्ल्ड' शब्द प्रदर्शित करेगा:

 HELLO    CSECT               The name of this program is 'HELLO'
 *                            Register 15 points here on entry from OPSYS or caller.
          STM   14,12,12(13)  Save registers 14,15, and 0 thru 12 in caller's Save area
          LR    12,15         Set up base register with program's entry point address
          USING HELLO,12      Tell assembler which register we are using for pgm. base
          LA    15,SAVE       Now Point at our own save area
          ST    15,8(13)      Set forward chain
          ST    13,4(15)      Set back chain               
          LR    13,15         Set R13 to address of new save area
 *                            -end of housekeeping (similar for most programs) -
          WTO   'Hello World' Write To Operator  (Operating System macro)
 *
          L     13,4(13)      restore address to caller-provided save area
          XC    8(4,13),8(13) Clear forward chain
          LM    14,12,12(13)  Restore registers as on entry
          DROP  12            The opposite of 'USING'
          SR    15,15         Set register 15 to 0 so that the return code (R15) is Zero
          BR    14            Return to caller
 *           
 SAVE     DS    18F           Define 18 fullwords to save calling program registers 
          END  HELLO          This is the end of the program

WTO एक असेंबलर मैक्रो है जो एक ऑपरेटिंग सिस्टम कॉल उत्पन्न करता है। रजिस्टरों को सहेजने और बाद में पुनर्स्थापित करने और वापस करने के कारण, यह छोटा प्रोग्राम ऑपरेटिंग सिस्टम कार्य नियंत्रण लैंग्वेज (जेसीएल) द्वारा सीधे लागू बैच प्रोग्राम के रूप में प्रयोग योग्य है:

// EXEC PGM=HELLO

या, वैकल्पिक रूप से, इसे ऐसे प्रोग्राम से सबरूटीन के रूप में कॉल किया जा सकता है:

 CALL 'HELLO'

संस्करण

असेंबलर G के लिए पहचान पृष्ठ दिखाने वाला बैच जॉब प्रिंटआउट

आईबीएम सिस्टम/360 मॉडल 20 के लिए असेंबलरों के अपवाद के साथ, आईबीएम असेंबलर काफी हद तक ऊपर की ओर संगत थे। अंतर मुख्यतः अनुमत अभिव्यक्ति की जटिलता और मैक्रो प्रोसेसिंग में थे। OS/360 असेम्बलर्स को मूल रूप से उनकी मेमोरी आवश्यकताओं के अनुसार नामित किया गया था।

7090/7094 सपोर्ट पैकेज असेंबलर

यह क्रॉस-असेंबलर IBM 7090 सिस्टम पर चलता है और इसका उपयोग तब किया गया था जब सिस्टम/360 विकास में था।[3][4]

बेसिक प्रोग्रामिंग सपोर्ट असेंबलर

बीपीएस के लिए असेंबलर ही सच्चा "बेसिक असेंबलर" है। इसे कार्डों से लोड करने का अभिप्राय था और यह 8 केबी सिस्टम/360 (मॉडल 20 को छोड़कर) पर चलेगा। इसमें मैक्रो निर्देशों या विस्तारित निमोनिक्स के लिए कोई समर्थन नहीं है (जैसे कि शाखा कोड 2 के स्थान पर बीएच, यदि स्थिति कोड 2 एक उच्च तुलना इंगित करता है)। यह केवल एक नियंत्रण अनुभाग को इकट्ठा कर सकता है और डमी अनुभागों (संरचना परिभाषाओं) की अनुमति नहीं देता है। कोष्ठक में अभिव्यक्ति की अनुमति नहीं है और अभिव्यक्ति केवल '+', '-' और '*' ऑपरेटरों के साथ तीन शब्दों तक सीमित है।[3]

बेसिक ऑपरेटिंग सिस्टम असेंबलर

बेसिक ऑपरेटिंग सिस्टम के दो असेंबलर वर्जन हैं। दोनों को 16 KB मेमोरी की आवश्यकता होती है, एक टेप रेजिडेंट और दूसरी डिस्क।[5]: pp.7–8 

असेम्बलर डी

असेंबलर डी, 16 KB की मेमोरी साइज वाली मशीनों के लिए DOS/360 और उत्तराधिकारी|DOS/360 असेंबलर था। यह दो संस्करणों में आया: न्यूनतम 16 KB मेमोरी वाली मशीनों के लिए 10 KB संस्करण, और 24 KB वाली मशीनों के लिए 14 KB संस्करण। 64 KB या अधिक वाली DOS मशीनों के लिए एक F-लेवल असेंबलर भी उपलब्ध था। डी असेंबलर्स ने उच्च संस्करणों की लगभग सभी सुविधाएँ पेश कीं।[6]: p.7 

असेंबलर ई और F

असेंबलर ई को न्यूनतम 32 केबी मुख्य स्टोरेज के साथ OS/360 सिस्टम पर चलने के लिए डिज़ाइन किया गया था, जबकि असेंबलर को 15 केबी की आवश्यकता होती है।[7]: p.2  असेंबलर F 64 KB मेमोरी वाले सिस्टम पर DOS/360 या OS/360 के तहत चल सकता है, असेंबलर को 44 KB की आवश्यकता होती है।[8][9][10] ये असेंबलर OS/360 का एक मानक भाग हैं; जो संस्करण तैयार किया गया था वह सिस्टम जेनरेशन (OS)OS) (SYSGEN) में निर्दिष्ट किया गया था।

मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर

"कुछ अपवादों के साथ, आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर लैंग्वेज आईबीएम सिस्टम/360 प्रोग्रामिंग सपोर्ट में उपलब्ध लैंग्वेज का एक चयनित उपसमूह है।" सबसे महत्वपूर्ण बात यह है कि मॉडल 44 असेंबलर में मैक्रोज़ और निरंतरता विवरणों के लिए समर्थन का अभाव था। दूसरी ओर इसमें कई ऐसी विशेषताएं थीं जो अन्य सिस्टम/360 असेंबलरों में नहीं पाई गईं - विशेष रूप से कार्ड छवि स्रोत डेटासेट को अपडेट करने के निर्देश, जिसे सामान्य नाम दिया गया, और SETAअसेंबलर वेरिएबल्स की अंतर्निहित परिभाषा।[11]

असेम्बलर G

"असेम्बलर G" वाटरलू विश्वविद्यालय द्वारा 1970 के दशक में असेंबलर F में किए गए संशोधनों का एक सेट है (असेम्बलर F ओपन सोर्स था/है)। संवर्द्धन ज्यादातर इनपुट/आउटपुट के बेहतर संचालन और बेहतर बफ़रिंग में हैं जो असेंबली को काफी तेज़ कर देते हैं।[12] "असेंबलर G" कभी भी आईबीएम का उत्पाद नहीं था।

असेम्बलर H

असेंबलर H OS/360 और उसके उत्तराधिकारियों पर चलता है; यह असेंबलर F की तुलना में तेज़ और अधिक शक्तिशाली था, लेकिन मैक्रो लैंग्वेज पूरी तरह से संगत नहीं थी।

असेंबलर H संस्करण 2 की घोषणा 1981 में की गई थी और इसमें एक्सटेंडेड आर्किटेक्चर (XA) के लिए समर्थन सम्मिलित है,[13]: p.3–28 जिसमें AMODE और RMODE निर्देश सम्मिलित हैं। उच्च स्तरीय असेंबलर द्वारा.[14]

असेम्बलर XF

असेंबलर एक्सएफ, असेंबलर F का अपग्रेड है जिसमें नए सिस्टम/370 आर्किटेक्चर निर्देश सम्मिलित हैं। यह संस्करण OS/VS और DOS/VS सिस्टम के लिए एक सामान्य असेंबलर प्रदान करता है। अन्य परिवर्तनों में अभिव्यक्ति और मैक्रो प्रोसेसिंग पर प्रतिबंधों में ढील देना सम्मिलित है। असेंबलर XF को न्यूनतम 64 KB (वर्चुअल) विभाजन/क्षेत्र आकार की आवश्यकता होती है। अनुशंसित आकार 128 KB है.[15]: p.73 

हाई लेवल असेंबलर

हाई लेवल असेंबलर या HLASM को जून 1992 में आईबीएम के असेंबलर H संस्करण 2 के स्थान पर जारी किया गया था।[16][17] यह सिस्टम/370 और सिस्टम/390 के लिए डिफ़ॉल्ट अनुवादक था, और MVS, VSE और VM ऑपरेटिंग सिस्टम का समर्थन करता था। 2023 तक यह अपने z/OS, z/VSE, z/VM और z/TPF ऑपरेटिंग सिस्टम के लिए z/आर्किटेक्चर मेनफ्रेम कंप्यूटर पर IBM की वर्तमान असेंबलर प्रोग्रामिंग लैंग्वेज है। रिलीज 6 और बाद में लिनक्स पर भी चलता है, और ईएलएफ या जीओएफएफ ऑब्जेक्ट फ़ाइलें उत्पन्न करता है (इस वातावरण को कभी-कभी आईबीएम Z पर लिनक्स के रूप में संदर्भित किया जाता है)। आईबीएम में काम करते समय, जॉन रॉबर्ट एहरमैन ने HLASM[lower-alpha 4] का निर्माण किया[19] और वह इसके प्रमुख डेवलपर थे और उन्हें "उच्च स्तरीय असेंबलर का जनक" माना जाता है।[20]

नाम के स्थान पर, HLASM में सामान्यतः उच्च-स्तरीय असेंबलर से जुड़ी कई सुविधाएं नहीं होती हैं। यह नाम अतिरिक्त मैक्रो लैंग्वेज क्षमताओं से आ सकता है, जैसे उपयोगकर्ता-परिभाषित फ़ंक्शन लिखने की क्षमता। असेंबलर अधिकतर असेंबलर H और असेंबलर (XF) के समान है, जिसमें एसएलएसी (स्टैनफोर्ड लीनियर एक्सेलेरेटर) संशोधन सम्मिलित हैं। जोड़ी गई सुविधाओं में स्थान काउंटर, डिपेंडेंट[lower-alpha 5] और लेबल[lower-alpha 6] USING स्टेटमेंट के लिए CSECT/DSECT का संकेत, वर्तमान में सक्रिय USING स्टेटमेंट की एक सूची, क्रॉस-रेफरेंस में एक वेरिएबल पढ़ा या लिखा गया है या नहीं, इसका संकेत दिया गया। और मिश्रित-केस प्रतीक नामों की अनुमति दे रहा है।[21] RSECTनिर्देश (रीड-ओनली कंट्रोल सेक्शन) असेंबलर को प्रति-सेक्शन के आधार पर पुनर्प्रवेश की जांच करने की अनुमति देता है। RSECT को पहले "असेम्बलर H में अप्रलेखित और असंगत रूप से लागू किया गया था।"[22]: p.43 

हाई लेवल असेंबलर टूलकिट

हाई लेवल असेंबलर टूलकिट हाई लेवल असेंबलर के लिए एक अलग कीमत वाली संगत है। टूलकिट में सम्मिलित हैं:[23]

  • संरचित प्रोग्रामिंग मैक्रो (कंप्यूटर विज्ञान) का एक सेट -
    • यदि/अन्यथा/समाप्ति
    • करें/समाप्त करें
    • STRTSRCH/ORELSE/ENDLOOP/ENDSRCH
    • कैसेंट्री/केस/एंडकेस
    • चुनें/कब/अन्यथा/अंत करें।
  • अलग करनेवाला
  • एक प्रोग्राम अंडरस्टैंडिंग टूल (रीइंजीनियरिंग (सॉफ्टवेयर)|री-इंजीनियरिंग सहायता)।
  • एक स्रोत एक्सआरईएफ उपयोगिता (क्रॉस-रेफरेंस सुविधा)।
  • इंटरएक्टिव डिबग सुविधा।
  • उन्नत सुपरसी (स्रोत तुलना उपकरण)।

विशेषीकृत संस्करण

आईबीएम सिस्टम/360 मॉडल 44 पीएस असेंबलर

आईबीएम सिस्टम/360 मॉडल 44 प्रोग्रामिंग सिस्टम असेंबलर एक ऐसी लैंग्वेज को संसाधित करता है जो OS/360 और DOS/360 असेंबलर लैंग्वेज का एक चयनित उपसमूह है। इसमें स्टोरेज-टू-स्टोरेज (एसएस) निर्देशों या बाइनरी में कनवर्ट करने के लिए कोई समर्थन नहीं है (CVB), दशमलव में कनवर्ट करें (CVD), सीधे पढ़ें (RDD) और सीधे लिखें (WRD) निर्देश।[24] इसमें मॉडल 44 के लिए अद्वितीय चार निर्देश सम्मिलित हैं: प्राथमिकता मास्क बदलें (CHPM), लोड पीएसडब्ल्यू स्पेशल (LPSX), डायरेक्ट वर्ड पढ़ें (RDDW), और डायरेक्ट वर्ड लिखें (WRDW). इसमें स्रोत प्रोग्राम को अद्यतन करने के निर्देश भी सम्मिलित हैं, जो अन्य प्रणालियों में उपयोगिता कार्यक्रमों द्वारा किया जाने वाला कार्य है (SKPTO, REWND, NUM, OMIT और ENDUP). यह सामान्य और अंतर्निहित रूप से परिभाषित नाम प्रदान करता है &SETA प्रतीक, लेकिन कुछ प्रतिबंध भी हैं।[24]: pp.53, 73 

आईबीएम सिस्टम/360 टीएसएस असेंबलर

TSS/360|सिस्टम/360 मॉडल 67 टाइम शेयरिंग सिस्टम के लिए असेंबलर में अद्वितीय TSS सुविधाओं का समर्थन करने के निर्देशों में कई अंतर हैं। PSECT ई> निर्देश एक प्रोटोटाइप नियंत्रण अनुभाग उत्पन्न करता है जिसमें प्रोग्राम द्वारा उपयोग किए जाने वाले स्थानांतरण योग्य पता स्थिरांक और परिवर्तनीय डेटा सम्मिलित होता है।[25]: p.143 

गैर-आईबीएम असेंबलर

विशेष वातावरण के लिए कई आईबीएम-संगत असेंबलर उपस्थित हैं।[26]

  • यूनिसिस की यूनिवैक सीरीज 90|यूनिवैक 90/60, 90/70 और 90/80 सीरीज को आईबीएम-फॉर्मेट असेंबलर को स्वीकार करने के लिए डिजाइन किया गया था, क्योंकि मशीन श्रृंखला एस/360 और एस/370 के समान थी।
  • फुजित्सु बीएस2000 श्रृंखला को भी यूनिवैक के समान संसाधन से 370 वर्कलाइक के रूप में बनाया गया था, और अभी भी यूरोप के कुछ हिस्सों में उपयोग में है।[27]
  • डिग्नस एलएलसी सिस्टम्स/एएसएम एक HLASM-संगत असेंबलर है जो मूल रूप से आईबीएम सिस्टम पर या क्रॉस-असेंबलर के रूप में चल सकता है।[28]
  • डॉन हिगिंस द्वारा लिखित फ्रीवेयर पीसी/370 को बाद में माइक्रो फोकस इंटरनेशनल द्वारा खरीद लिया गया।
  • z390 एक असेंबलर और सिस्टम 390 एमुलेटर है जो डॉन हिगिंस द्वारा लिखा गया है और इसे जावा (प्रोग्रामिंग लैंग्वेज) में प्रोग्राम किया गया है। यह ओपन सोर्स है और http://www.z390.org/ पर उपलब्ध है।
  • पेन स्टेट यूनिवर्सिटी ने ASSIST (कंप्यूटिंग) नामक एक पैकेज लिखा, जिसमें एक सिस्टम 370 असेंबलर और दुभाषिया सम्मिलित है।
  • टैचियन सॉफ्टवेयर एलएलसी टैचियन असेंबलर वर्कबेंच का विपणन करता है जो विंडोज, लिनक्स/x86, S/390 और zSeries, AIX और सोलारिस के लिए लिनक्स पर चलता है।[29]
  • जीएनयू असेंबलर (गैस) आईबीएम Z पर लिनक्स के लिए जीएनयू कंपाइलर संग्रह (जीसीसी) का भाग है। OS/390 और आईबीएम Z पर लिनक्स इस असेंबलर में एक अद्वितीय सिंटैक्स है जो आईबीएम आर्किटेक्चर के लिए अन्य असेंबलरों के साथ असंगत है।

सामान्य ज्ञान

BAL, ब्रांच एंड लिंक w:nl:Instructieset van IBM 360 का प्रतीक भी है।[2]

यह भी देखें

  • आईबीएम सिस्टम/360
  • सहायता (कंप्यूटिंग)
  • पीसी-आधारित आईबीएम-संगत मेनफ्रेम - संगत मशीनों या वर्चुअल मशीनों की सूची
  • डिस्सेबलर - असेंबली की रिवर्स प्रक्रिया, मशीन कोड से असेंबली जैसे स्रोत का पुनर्निर्माण

टिप्पणियाँ

  1. Most uses of BALR have been replaced by BASR and similar instructions.
  2. Many uses of SVC have been replaced by a PC instruction.
  3. VM repurposes DIAG as an HVC instruction.
  4. HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements[18] to Assembler H into the supported product.
  5. A dependent USING is one that specifies a relocatable expression instead of a list of registers:
             USING IHADCB,SYSPRINT
             ...
             TM    DCBOPTCD,DCBOPTC       Test OPTCD in SYSPRINT
             ...
    
  6. A labelled USING is one that only affects instructions that explicitly refer to it by qualifying an expression with a label:
             LA    R4,SYSIN
             LA    R5,SYSPRINT
    IN       USING IHADCB,R4
    OUT      USING IHADCB,R5
             ...
             TM    IN.DCBOFLGS,DCBOFTM        Test OFLGS in SYSIN
             ...
             TM    OUT.DCBOPTCD,DCBOPTC       Test OPTCD in SYSPRINT
             ...
    


संदर्भ

  1. IBM System/360 Principles of Operation (PDF). A22-6821-0. Retrieved Dec 6, 2018. {{cite book}}: |work= ignored (help)
  2. 2.0 2.1 "एचएलएएसएम - सभी ऑपकोड, विस्तारित निमोनिक्स और फ़ंक्शन कोड की सूची, निमोनिक द्वारा क्रमबद्ध". Retrieved January 14, 2013.
  3. 3.0 3.1 IBM System/360 Basic Programming Support Basic Assembler Language (PDF). February 1965. C20-6503-0. Retrieved April 5, 2022. {{cite book}}: |work= ignored (help)
  4. IBM 7090/7094 Support Package for IBM System/360 (PDF). November 1964. C28-6501-2. Retrieved April 5, 2022. {{cite book}}: |work= ignored (help)
  5. IBM System/360 Basic Operating System Language Specifications Assembler (16K Disk/Tape) (PDF). December 1965. C24-3414-1. Retrieved April 5, 2022. {{cite book}}: |work= ignored (help)
  6. IBM Corporation (1970). IBM System/360 Disk and Tape Operating Systems Assembler Language (PDF).
  7. IBM Corporation (1966). IBM System/360 Operating System Assembler (32K) Program Logic Manual (PDF).
  8. IBM Corporation (1968). IBM System/360 Disk Operating System Assembler(F) Program Logic (PDF).
  9. IBM Corporation (1971). IBM System/360 Assembler(F) Program Logic (PDF).
  10. IBM Corporation (1974). आईबीएम ओएस असेंबलर भाषा (PDF).
  11. IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF). p. 73. Retrieved July 2, 2019.
  12. Stanford Linear Accelerator Center. "GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)" (PDF). Retrieved October 8, 2012.
  13. IBM Corporation (1984). MVS/Extended Architecture Conversion Notebook (PDF).
  14. IBM Corporation (20 December 1996). "5668-962 IBM Assembler H Version 2 Release 1.0". Retrieved October 8, 2012.
  15. IBM Corporation (1973). OS/VS Assembler Programmer's Guide (PDF).
  16. IBM Corporation. "आईबीएम हाई लेवल असेंबलर और टूलकिट फ़ीचर - रिलीज़ इतिहास". Retrieved October 21, 2012.
  17. IBM Corporation (5 May 1992). "Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Retrieved October 21, 2012.
  18. Greg Mushial (July 20, 1983), "Module 24: SLAC Enhancements to and Beautifications of the IBM H-Level Assembler for Version 2.8", SLAC VM NOTEBOOK, Stanford Linear Accelerator Center
  19. IBM Corporation (2008). zSeries उपयोगकर्ता गाइड पर लिनक्स के लिए उच्च स्तरीय असेंबलर (PDF).
  20. "जॉन आर. एहरमन संग्रह के लिए गाइड". Online Archive of California. X5621.2010. Archived from the original on 2022-10-15. Retrieved 2022-10-15. [1]
  21. "IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE". Announcement letters. IBM Corporation. May 5, 1992. 292-244. Retrieved October 8, 2012.
  22. IBM Corporation (1995). IBM High Level Assembler for MVS & VM & VSE Release 2 Presentation Guide (PDF). Archived from the original (PDF) on 2016-01-23.
  23. IBM Corporation. "टूलकिट फ़ीचर घटक". Retrieved October 21, 2012.
  24. 24.0 24.1 IBM Corporation (1966). IBM System/360 Model 44 Programming System Assembler Language (PDF).
  25. IBM Corporation (1976). आईबीएम टाइम शेयरिंग सिस्टम असेंबलर प्रोग्रामर गाइड (PDF).
  26. Alcock, David. "Dave's z/Architecture Assembler FAQ". Planet MVS. Retrieved December 15, 2012.
  27. Fujitsu ASSEMH manuals available from http://manuals.ts.fujitsu.com/index.php?id=1-2-2926-15435 (Retrieved 2016-02-27)
  28. Dignus, LLC. "Systems/ASM". Retrieved December 15, 2012.
  29. टैचयोन सॉफ्टवेयर LLC. "टैचयोन सॉफ्टवेयर". Retrieved December 15, 2012.
Additional references
  • Rudd, Anthony. An Illustrated Guide for z/Architecture Assembler Programmers. Create Space (2012).


बाहरी संबंध