मैं दृढ़ता से सुझाव देता हूं कि आप अपने लक्ष्य पर पुनर्विचार करें और यहां बताया गया है:
मैंने पहली बार बीबीसी माइक्रो कंप्यूटर (मॉडल बी, 32 के) पर 6502 असेंबली लैंग्वेज सीखी। इसमें एक भयानक बेसिक कार्यान्वयन था जिसमें एक मैक्रो असेंबलर शामिल था। हमारे पास स्कूल में था इसलिए मैंने सभी प्रकार के शरारती कार्यक्रम लिखे जो कि प्रत्येक स्क्रीन पर, कमरे के आसपास (वे नेटवर्क किए गए थे) यदि मशीन 10 मिनट तक उपयोग नहीं की गई थी । यह मेरे वर्ष 7 दोस्तों के बीच गिगल्स के फिट बैठता है।
जब मुझे घर पर एक कमोडोर 64 मिला, तो मुझे पता चला कि इसमें 6510 सीपीयू था, जो 6502 असेंबली भाषा में भी चलता था, लेकिन कुछ दिलचस्प मंत्रों के साथ। मुझे एक असेंबलर (एक कारतूस पर आया ) खरीदना था और बेसिक के माध्यम से कार्यक्रमों को लागू करना था। सबसे ज्यादा बिकने वाले खेल लिखने के भव्य दर्शन के साथ, मैं अंत में कई डेमो बनाने में कामयाब रहा जो कि बिट-ट्वीडल्ड वीडियो डिस्प्ले हार्डवेयर रजिस्टरों को रुचिकर बनाते हैं, जो दिलचस्प कलर बार इफेक्ट करते हैं जो फंकी चिप म्यूजिक के लिए एनिमेटेड है। प्रभावशाली, लेकिन उतना उपयोगी नहीं।
मुझे तब एक एकोर्न आर्किमिडीज़ A310 मिला, जिसमें ARM2 CPU था इसलिए मैंने उसी माइक्रो-बेसक कार्यान्वयन को बीबीसी माइक्रो (उसी विरासत) के रूप में बिल्ट-इन मैक्रो असेंबलर के साथ उपयोग किया। मैं एक साथ कुछ गेम खेलने में कामयाब रहा, जो एक मित्र ने ग्राफिक्स के लिए प्रदान किया, साथ ही कुछ साइनसॉइड-आधारित ट्रिप्पी डेमो भी। ये दोनों प्रोग्राम के लिए कड़ी मेहनत करने वाले थे और खराब कोड मशीन (गलती से यात्रा हार्डवेयर रीसेट रजिस्टर, आदि) को नीचे ले जा सकते थे, अगर मैंने बचाया नहीं था (फ्लॉपी!)।
विश्वविद्यालय में मुझे C ++ से परिचित कराया गया था और इस प्रकार मैं इसे Sun / Solaris और कुछ अन्य बड़े मेनफ्रेम कंप्यूटर प्रोग्राम करने के लिए उपयोग करने में सक्षम था। मुझे पता नहीं है कि इन मशीनों पर सीपीयू आर्किटेक्चर क्या चलता था - मुझे एसेंबलर या रीड मशीन कोड का उपयोग करने की आवश्यकता नहीं थी क्योंकि सी ++ टूल ने मुझे पेशेवर अनुप्रयोगों का उत्पादन करने के लिए आवश्यक शक्ति दी।
यूनी के बाद, मैंने विंडोज और यूनिक्स के कई स्वादों पर काम किया। C और C ++ ने इन सभी मशीनों पर काम किया और अंततः जावा ने भी किया।
फिर मैंने डिबगिंग के लिए व्यापक टूल चेन के साथ डायरेक्टएक्स के साथ सी ++ का उपयोग करके विंडोज और ड्रीमकास्ट पर काम किया।
मैंने तब स्मार्ट टीवी (2000 में) के लिए एआरएम-आधारित चिपसेट के साथ काम किया। हालांकि ARM2 के साथ मेरा अनुभव यहां प्रासंगिक रहा होगा, नौकरी सी आधारित थी। मैंने पाया कि हार्डवेयर के बारे में जो मैं आर्किमिडीज पर करता था, उसके बारे में भी सभी ग को सीधो-सीधे बिट-ट्विडलिंग ऑपरेशन का उपयोग करके किया जा सकता है। मेरी भूमिका का हिस्सा कोड बेस को विंडोज, प्लेस्टेशन 2, लिनक्स, अन्य टीवी और मोबाइल चिपसेट पर स्थानांतरित करना था। ये सभी प्लेटफ़ॉर्म सी कंपाइलर (अक्सर जीसीसी) और एपीआई के कुछ स्तर के साथ अंतर्निहित मशीन पर लिखने के लिए उपलब्ध थे - एम्बेडेड दुनिया शायद ही कभी कर्नेल ओ / एस है। मुझे बूट लोडर और मिनी-BIOS लिखने से परे किसी भी विशेष मंच के लिए पूर्ण मशीन कोड जानने की आवश्यकता नहीं थी, दोनों पहले उपलब्ध अवसर पर सी कोड में कूद गए (ट्रैप वैक्टर स्थापित करने के बाद,)
अगली नौकरी विंडोज पर सी ++, सी # और जावास्क्रिप्ट के साथ काम कर रही थी। कोई मशीन कोड नहीं।
वर्तमान कार्य विभिन्न प्लेटफार्मों पर C ++, जावास्क्रिप्ट, पायथन, LUA, HTML और अन्य भाषाओं के साथ काम कर रहा है। मुझे नहीं पता कि ये प्लेटफ़ॉर्म कौन से मशीन कोड चलाते हैं, और न ही मुझे यह जानने की ज़रूरत है - संकलक हमारे कोड को जो कुछ भी होना चाहिए, उसका अनुवाद करता है। यदि यह क्रैश हो जाता है, तो मैं डिबगर में या रनटाइम डायग्नोस्टिक्स (अपवाद, सिग्नल, आदि) के माध्यम से त्रुटि को पकड़ता हूं।
मज़े के लिए, मैं घर पर मेरे पास मौजूद खाली समय में iOS एप्लिकेशन विकसित करता हूं। यह ऑब्जेक्टिव-सी और एक एपीआई का उपयोग करता है जो कई चिपसेट में काम करता है। जाहिरा तौर पर वे एआरएम-आधारित हैं, लेकिन मैंने कभी भी अपने विकास में कोई मशीन कोड नहीं देखा है।
हालांकि इसकी 'असेम्बली लैंग्वेज' सीखने की एक आकर्षक कवायद है, वहाँ अब बहुत उच्च-स्तरीय उपकरण और भाषाएँ हैं जो आपको एक ऑर्डर-ऑफ-परिमाण (या दो) अधिक उत्पादक बनाने की अनुमति देती हैं।
जावास्क्रिप्ट, जावा, C #, C ++ या ObjC जैसी किसी चीज़ की तुलना में एक अद्भुत असेंबली भाषा / मशीन कोड प्रोग्रामर के लिए उपलब्ध रोजगार के अवसरों की संख्या में कमी है।
मैं आपको एक मुख्य लक्ष्य के बजाय इसे एक शौक / पक्ष-हित बनाने की सलाह दूंगा।