5

मैं बस सोच रहा था, मशीन दुभाषिया बाइनरी कोड कैसे करते हैं? मैं समझता हूं कि आपका कोड 1 और 0 में बदल गया है ताकि मशीन उन्हें समझ सके, लेकिन वे ऐसा कैसे करते हैं? क्या यह बाइनरी अनुवाद के लिए सिर्फ एक सामान्य पाठ है?मशीन बाइनरी की व्याख्या कैसे करती है?

उत्तर

12

सबसे पहले, "बाइनरी" का मतलब यह नहीं है कि इसका मतलब क्या है (कंप्यूटर पर मौजूद कोई भी डेटा पहले से ही बाइनरी है, वैसे ही जिस तरह से हम प्रदर्शित करने और संभालने का निर्णय लेते हैं)।

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

मैं एक एमआईपीएस निर्देशों का एक उदाहरण दिखाऊंगा। यदि आप रुचि रखते हैं, तो आप इस विषय के बारे में कुछ वास्तविक ज्ञान पढ़ सकते हैं और प्राप्त कर सकते हैं, मेरे पोस्ट के अंत में लिंक आज़माएं।

एमआईपीएस एक लोकप्रिय प्रारंभिक विषय है क्योंकि इसका निर्देश प्रारूप अधिक पचाने वाले लोगों में से एक है। एमआईपीएस निर्देश 32 बिट चौड़े हैं। एमआईपीएस में 3 प्रकार के निर्देश हैं: "आर", "आई" और "जे"। हम "मैं" निर्देशों पर एक नज़र डालेंगे।

जब प्रोसेसर को निर्देश मिलता है (डेटा के 32 बिट) यह इसे पढ़ता है और निर्णय लेता है कि इसके साथ क्या किया जाए। "मैं" निर्देश इस तरह दिखेगा:

|------|-----|-----|----------------| 
opcode rs rt immediate 
    6  5  5  16    (the numbers show how wide are each part) 

इन का अर्थ:

  • opcode बताता अनुदेश किस तरह इस (उदाहरण के लिए: इसके अलावा, घटाव, गुणा और कई अन्य) है। सभी निर्देश ("आर" और "जे" प्रकार सहित) 6-बिट ऑपोड के साथ शुरू होते हैं, और इस तरह प्रोसेसर जानता है कि यह किस तरह का है।
  • आरएस और आरटी रजिस्ट्रार हैं, प्रोसेसर में एक प्रकार का स्टोरेज जो 32 बिट मान रख सकता है। एमआईपीएस में इनमें से 32 है और उन्हें उनकी संख्या से पहचाना जाता है। यह स्मृति के समान नहीं है, यह सीपीयू के अंदर ही है।
  • तत्काल एक संख्या है। इसे कहा जाता है क्योंकि निर्देश में निर्देश "सही है", रजिस्टर या स्मृति में नहीं।

एक तत्काल एक नंबर एक रजिस्टर में संग्रहीत को जोड़ने का एक ठोस उदाहरण:

001000 00001 00010 0000000000000011 

इस उदाहरण में, मैं के रूप में ऊपर भागों में अनुदेश तोड़ दिया।

  • opcode: 001000 मतलब है addi या "तत्काल जोड़ने" मूल्यों का अर्थ इस प्रकार है।
  • रु: 00001 दशमलव में 1 है, इसलिए शिक्षा के इस हिस्से प्रोसेसर है कि हम रजिस्टर 1 के रूप में रु उपयोग करना चाहते हैं बताता है।
  • rd: 000102 दशमलव में, आरएस के साथ समान विचार है।
  • तत्काल: 0000000000000011 दशमलव में 3 है।

addi अनुदेश इस तरह काम करता है: यह रु में पाया मूल्य लेता है और यह करने के लिए तत्काल मूल्य कहते हैं। इसके बाद यह परिणाम rd में डाल देता है। इसलिए, जब निर्देश किया जाता है, rd में 3 + 2 = 5 होगा।

संक्षेप में, कंपाइलर्स आपके टेक्स्ट को पार्स करते हैं और लक्ष्य प्रोसेसर को निर्देश जेनरेट करते हैं जो वही काम करता है जो आप अपने प्रोग्राम के साथ करना चाहते हैं। जैसा कि आप देख सकते हैं, कार्यक्रम के पाठक प्रतिनिधित्व के बीच एक बड़ा अंतर है जिसे हम प्रोग्रामर लिखते हैं, और चलने योग्य मशीन कोड।

0

यह एक बड़ा विषय है जो आप पूछ रहे हैं। सैद्धांतिक रूप से कंप्यूटर और कंपाइलर्स का निर्माण कैसे किया जाता है, इसके बारे में एक सिंहावलोकन के लिए मैं उत्कृष्ट पुस्तक The elements of computing systems की अनुशंसा करता हूं। यह पालन करना बहुत आसान है और अभ्यास करना मजेदार है। इसमें से अधिकांश लिंक उपलब्ध लिंक पर ऑनलाइन उपलब्ध है।

This question इस विषय पर कुछ अच्छे लिंक भी हैं।

0

Think साथ खेलने के लिए अनुमति देता है:

एक MIPS और कंप्यूटर वास्तुकला पर कुछ उपयोगी संसाधनों इस तरफ। आपके पास 8 स्विच स्विच हैं जो प्रत्येक स्विच या तो बंद (0) या (1) पर हैं। कंप्यूटर सभी 8 स्विच 1 के रूप में देखेगा। यह अब संयोजन लॉक की तरह है। आपके कीबोर्ड पर प्रत्येक प्रतीक यह संयोजन पर है।

संबंधित मुद्दे