एक प्रोसेसर संचालित करता है जो एक fetch-decode-execute cycle के रूप में जाना जाता है। मशीन कोड निर्देश काफी कम स्तर पर हैं (यानी वे एक ही निर्देश में इतना कुछ नहीं करते हैं)।
- लोड संकार्य 1 का पता करने के लिए एक सूचक रजिस्टर में 1
- लोड पते पर संग्रहीत मूल्य रजिस्टर में रजिस्टर 1 में संग्रहीत: उदाहरण के लिए, दो नंबर को जैसे चाहें अर्थ विज्ञान के साथ निर्देशों का एक अनुक्रम होता 2
- लोड संकार्य 2 के पते पर एक सूचक रजिस्टर में 1
- लोड मूल्य रजिस्टर में रजिस्टर 1 में पते पर संग्रहीत 3
- रजिस्टर 2 की सामग्री को जोड़ें और रजिस्टर 3 और रजिस्टर 4 में संग्रहीत
- रजिस्टर में गंतव्य के लिए एक सूचक लोड 1
- स्टोर प्रोसेसर के भीतर रजिस्टर 1
में निर्दिष्ट है तेजी से स्मृति का एक विशेष सेट एक 'रजिस्टर फ़ाइल' के रूप में जाना पते में रजिस्टर 4 की सामग्री , जिसमें स्मृति शामिल है जो प्रोसेसर उस समय डेटा को संग्रहीत करने के लिए उपयोग करता है जो उस समय काम कर रहा है। रजिस्टर फ़ाइल में कई रजिस्ट्रार हैं, जिन्हें विशिष्ट रूप से पहचाना जाता है। निर्देश आमतौर पर रजिस्टरों पर काम करते हैं, खासकर आरआईएससी आर्किटेक्चर पर; जबकि यह हमेशा मामला नहीं है, इस पल के लिए यह एक अच्छा पर्याप्त अमूर्त है।
आम तौर पर एक प्रोसेसर को इसके साथ कुछ भी करने के लिए एक रजिस्टर में डेटा लोड या स्टोर करना होता है। रजिस्टरों पर अंकगणितीय कार्य जैसे संचालन, दो रजिस्टरों से ऑपरेटरों को लेना और परिणाम को तीसरे स्थान पर रखना (मूंगफली गैलरी के लाभ के लिए, में का उपयोग 6502 होता है - इस मुद्दे को भ्रमित नहीं करने देता है ;-)। प्रोसेसर के पास मशीन से मुख्य मेमोरी में रजिस्टरों से डेटा लोड या स्टोर करने के लिए विशेष निर्देश हैं।
एक प्रोसेसर के पास 'प्रोग्राम काउंटर' नामक एक विशेष रजिस्टर होता है जो निष्पादित करने के लिए अगले ऑपरेशन का पता संग्रहीत करता है। इस प्रकार, एक निर्देश निष्पादित करने के लिए अनुक्रम मोटे तौर पर इस प्रकार है:
- प्रोग्राम काउंटर में वर्तमान पते पर संग्रहीत निर्देश प्राप्त करें।
- निर्देश को डीकोड करें, वास्तविक ऑपरेशन को अलग करना, इसका उपयोग करने वाले रजिस्टरों, 'एड्रेसिंग मोड' (यह कैसे काम करता है या डेटा स्टोर करने के लिए कैसे काम करता है) और कुछ अन्य बिट्स और बॉब्स।
- निर्देश का निष्पादन करें।
निर्देश निष्पादित करने से विभिन्न रजिस्टरों में मूल्य बदल जाएगा। उदाहरण के लिए, 'लोड' निर्देश एक मान को एक रजिस्टर में कॉपी करेगा। एक अंकगणितीय या तार्किक (और, या, ज़ोर) दो मान लेंगे और एक तिहाई गणना करेंगे। एक कूद या शाखा निर्देश प्रोग्राम काउंटर पर पता बदल देगा ताकि प्रोसेसर एक अलग स्थान से निर्देश प्राप्त करना शुरू कर दे।
प्रोसेसर में विशेष रजिस्ट्रार हो सकते हैं। इस तरह का एक उदाहरण उपरोक्त वर्णित कार्यक्रम काउंटर है। एक और ठेठ एक शर्त झंडे रजिस्टर है। इसमें विशेष अर्थों के साथ कई बिट्स होंगे। उदाहरण के लिए इसमें एक ध्वज हो सकता है जो सेट किया गया है यदि अंतिम अंकगणितीय ऑपरेशन का परिणाम शून्य था। यह सशर्त संचालन के लिए उपयोगी है। आप दो संख्याओं की तुलना कर सकते हैं। यदि वे बराबर हैं, तो 'शून्य' ध्वज सेट किया गया है। प्रोसेसर में एक सशर्त निर्देश हो सकता है जिसे केवल तभी सेट किया जाता है जब यह ध्वज सेट हो।
इस मामले में, आप एक रजिस्टर में काउंटर कम कर सकते हैं और यदि यह शून्य था, तो एक शर्त ध्वज सेट किया गया है। एक सशर्त (शून्य पर शाखा) का उपयोग लूप के लिए किया जा सकता है जहां आप काउंटर को कम करते हैं और लूप से बाहर निकलते हैं यदि कमी निर्देश का परिणाम शून्य है। कुछ प्रोसेसर पर (उदा।एआरएम परिवार) सभी निर्देश सशर्त हैं, गैर-सशर्त निर्देशों के लिए एक विशेष 'हमेशा करें' स्थिति के साथ।
ठेठ प्रोसेसर निर्देश के कुछ उदाहरण हैं:
- वृद्धि या एक रजिस्टर घटती
- लोड या स्मृति में एक रजिस्टर की सामग्री की दुकान। आपके पास किसी अन्य रजिस्टर की सामग्री द्वारा ऑफ़सेट लोड या स्टोर करने का पता भी हो सकता है। यह आपको अन्य रजिस्टर को बढ़ाकर डेटा की सरणी पर आसानी से लूप करने की अनुमति देता है।
- मूल्यों की गणना करने के लिए तार्किक संचालन जोड़ें, घटाएं, गुणा करें। ये दो रजिस्टरों से ऑपरेंड लेते हैं और परिणाम को तीसरे स्थान पर रखते हैं।
- किसी अन्य स्थान पर जाएं - यह स्थान की सामग्री को प्रोग्राम काउंटर में ले जाता है और नए स्थान से निर्देश प्राप्त करने लगता है।
- स्टैक पर पुश या पॉप मान।
This stackoverflow post संकलित सी कोड के एक छोटे स्निपेट और उस स्निपेट से असेंबली भाषा आउटपुट का एक उदाहरण है। यह आपको एक उच्च स्तरीय भाषा और मशीन कोड आउटपुट के बीच रिश्ते के प्रकार का उदाहरण देना चाहिए जो इसे संकलित करता है।
इसे सीखने का सबसे अच्छा तरीका एक असेंबलर प्राप्त करना और इसे आज़माएं। 1 9 80 के दशक के 8-बिट माइक्रो जैसे पुराने, सरल कंप्यूटरों पर यह अधिक आसान होता था। इन दिनों उपलब्ध इस प्रकार के आर्किटेक्चर की सबसे नज़दीकी चीज एम्बेडेड सिस्टम हैं। आप माइक्रोचिप पीआईसी जैसे एम्बेडेड प्रोसेसर के लिए काफी सस्ते रूप से विकास बोर्ड प्राप्त कर सकते हैं। चूंकि इस प्रकार के आर्किटेक्चर में आधुनिक ऑपरेटिंग सिस्टम की तुलना में कम सामान है, इसलिए सिस्टम कॉल का उपयोग करने के लिए कम आई-डॉटिंग और टी-क्रॉसिंग है। इससे इस प्रकार के आर्किटेक्चर पर एक असेंबली भाषा प्रोग्राम बूटस्ट्रैप करना आसान हो जाएगा; सरल वास्तुकला को समझना भी आसान है।
एक और विकल्प SPIM जैसे एमुलेटर प्राप्त करना है। यह एक सीपीयू का अनुकरण करेगा और आपको इस पर प्रोग्राम इकट्ठा करने और चलाने देगा। इस तरह के एक एमुलेटर का लाभ यह है कि उनके पास सिंगल स्टेपिंग प्रोग्राम (डीबगर की तरह) की सुविधा होगी और रजिस्टर फ़ाइल की सामग्री दिखाएगी। यह वास्तव में क्या हो रहा है के रूप में अंतर्दृष्टि प्राप्त करने में सहायक हो सकता है।
मेरा विश्वास करो, एक सीएस कोर्स शायद ऐसी चीजों में मदद नहीं करेगा। :( –
अधिकांश सीएस डिग्री एक वास्तुकला कागज जो इस सामान की मूल बातें शामिल किया गया है – ConcernedOfTunbridgeWells
http://en.wikipedia.org/wiki/Integrated_circuit – vartec