मशीन कोड वास्तव में चलाने के दौरान कैसा दिखता है?


21

जब मशीन कोड वास्तव में हार्डवेयर और सीपीयू द्वारा निष्पादित किया जा रहा है, तो यह कैसा दिखता है?

क्या यह द्विआधारी जैसा दिखाई देगा, जैसा कि लोगों और शून्य द्वारा दर्शाए गए निर्देशों में, या यह हेक्साडेसिमल अंकों से बना होगा, जहां opcodes को बाइट्स हेक्स संख्या के रूप में प्रस्तुत किया जाता है जिसे बाइनरी नंबर में वापस तोड़ा जा सकता है, जैसे कि ईटकोड?


24
क्या आप देखेंगे तार, फाटक, और रजिस्टर सिलिकॉन पर टिमटिमा रहे हैं। उदाहरण के लिए, visual6502.org/JSSim
Nayuki

4
@ नायकी मुझे लगता है कि यह दृश्य भयानक है और एक उत्तर में बनाया जाना चाहिए!
नलज़ोक

2
यह मेरे लिए कुछ भी नहीं दिखता है
गयूस

3
यह वास्तव में "अस्तित्व में" होने पर भी वास्तव में मौजूद नहीं है। सीपीयू पर माइक्रोकोड के लिए एक (हार्डवेयर!) डिवाइस द्वारा यह "JIT संकलित" है, जो वास्तव में CPU को निर्देश देता है!
xuq01

2
समझने के लिए कैसे एक कंप्यूटर तब्दील एक त्वरित तरीका है, लॉजिक गेट से एक का निर्माण करना है मैं वास्तव में बेन भक्षक द्वारा किए गए एक देख पसंद करती है youtube.com/playlist?list=PLowKtXNTBypGqImE405J2565dvjafglHU
Ferrybig

जवाबों:


38

सबसे अच्छा जवाब जो मैं दे सकता हूं, वह वास्तव में कुछ भी "लुक" नहीं है। वर्तमान में सीपीयू द्वारा निष्पादित किए जाने वाले निर्देश को तारों की एक श्रृंखला द्वारा दर्शाया जाता है, जिनमें से कुछ में उच्च वोल्टेज होता है, जिनमें से कुछ में कम वोल्टेज होता है।

आप उच्च और निम्न वोल्टेज को शून्य और लोगों के रूप में व्याख्या कर सकते हैं, लेकिन आप हेक्साडेसिमल अंकों के रूप में उच्च और निम्न वोल्टेज के समूहों को समान रूप से अच्छी तरह से व्याख्या कर सकते हैं, या एक विधानसभा निर्देश की तरह ADD $0 $1(जो कि सीपीयू इसे कैसे व्याख्या करता है) के सबसे करीब है। ये संख्याएँ और मानविकी स्वयं मनुष्यों के पढ़ने के लिए उपयुक्त हैं; आंतरिक रूप से, यह तारों पर वोल्टेज के अलावा और कुछ नहीं है।

इन विकल्पों में से, बाइनरी "धातु के सबसे करीब" है, जिसमें शून्य और वे सीधे तारों पर उच्च और निम्न वोल्टेज पर मैप करते हैं। लेकिन दूसरों में से कोई भी गलत नहीं है, और वे अक्सर अधिक उपयोगी होते हैं: एक कारण है कि लोग निष्पादनयोग्य के हेक्स-डंप को देखते हैं, लेकिन लगभग कभी भी बाइनरी-डंप नहीं होते हैं।


तो, क्या आप एक हेक्स संपादक में एक कार्यक्रम खोल सकते हैं, और क्या बाइट्स का प्रतिनिधित्व हेक्स ट्रांसलेशन टू मशीन कोड बाइनरी में किया जा सकता है जिसे एक शून्य को सौंपा गया वोल्टेज, और एक को सौंपा गया वोल्टेज द्वारा चलाया जा सकता है?
टिम हार्डली

4
@ तीमारदार हां! हेक्स पढ़ना आसान है। असेंबली, इसी तरह, पढ़ना भी आसान है, लेकिन यांत्रिक रूप से शून्य और लोगों के लिए अनुवाद किया जा सकता है। यही कारण है कि कोडांतरक संकलक की तुलना में लिखना आसान है।
ड्रेकनिस

धन्यवाद, इस पूरे प्रश्न ने मेरे ज्ञान का विस्तार किया है और मेरी उलझन को दूर किया है।
टिम हार्डली

1
@TimHardly एक असेंबलर सिर्फ असेंबली फाइल को मशीन कोड में बदलने के लिए "NOP" जैसे पात्रों के अनुक्रम को "10010000", ओवर और ओवर जैसी श्रृंखलाओं में मैप करता है। सीपीयू द्वारा ऑपकोड का निर्धारण किया जाता है, क्योंकि यह वह हिस्सा है जो वास्तव में उनका उपयोग करने जा रहा है। सभी कंप्यूटर जो एक ही निष्पादक को चला सकते हैं , उनमें वास्तव में एक ही सेट ऑपकोड होता है; x86 सेट सबसे आम है, और आजकल सभी पीसी में बहुत उपयोग किया जाता है। एक और आम एक MIPS है, जिसका उपयोग कई गेम कंसोल में किया जाता है।
ड्रेकोनिस

1
@TimHardly यदि आपका प्रश्न है, तो कोडांतरक सीपीयू से पूछ सकता है कि एनओपी निर्देश के लिए उसका ओपकोड क्या है, इसका उत्तर नहीं है। कोडांतरक को पहले से ही यह पता होना चाहिए कि निर्देश के लिए क्या काम करना है, इससे पहले कि वह काम कर सके। वास्तव में, एक असेंबलर एक प्रोसेसर के लिए एक प्रोग्राम को आउटपुट कर सकता है, जबकि खुद एक अलग प्रोसेसर प्रकार पर चल रहा है।
श्री लिस्टर

11

"जैसा दिखता है" एक रूपक का अर्थ है। अगर हम "यह कैसा दिखेगा" का शाब्दिक अर्थ है, तो यह अपने मदरबोर्ड पर बैठे सिलिकॉन के एक फैंसी etched टुकड़े जैसा दिखने वाला है। स्पष्ट रूप से रूपक लक्ष्य था। रूपक के निर्माण के लिए, हमें यह देखने की जरूरत है कि यह वास्तव में क्या है। तब हम एक रूपक का निर्माण कर सकते हैं जो स्वीकार्य हो। यह थोड़ा लंबा है, लेकिन सौभाग्य से, यह एक वीडियो के साथ समाप्त होता है आपके लिए रूपक के ।

मशीन कोड वास्तव में बिट्स के रूप में मेमोरी में संग्रहीत होता है। मेमोरी चिप्स आमतौर पर DRAM हैं , जो उन बिट्स को एक संधारित्र और इलेक्ट्रॉनों में वोल्टेज के रूप में संग्रहीत करता है। दो जुड़े हुए हैं - इलेक्ट्रॉनों के बिना वोल्टेज के बारे में बात करना मुश्किल है। कभी-कभी एक या दूसरे के बारे में बात करने के लिए इसका सुविधाजनक है, लेकिन यह समझें कि जहां एक जाता है, वहीं दूसरा अनुसरण करता है।

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

आधुनिक मेमोरी समानांतर में डेटा प्रवाहित करती है। इसका मतलब है कि मशीन कोड बनाने वाले बिट्स को "लेन" (32 या 64 सामान्य) में विभाजित किया जाता है जो कि रैम से सीपीयू तक 32/64 तारों को कहने का तार्किक तरीका है। सीपीयू में संचारित करने के लिए आवश्यकतानुसार उन लाइनों पर वोल्टेज को ऊपर उठाया और उतारा जाता है।

एक बार सीपीयू में यह अपना काम कर सकता है। यह माइक्रोआर्किटेक्चर का क्षेत्र है , और यह जटिल हो सकता है क्योंकि यह सचमुच एक अरब डॉलर का उद्योग है। वे वोल्टेज ट्रांजिस्टर को प्रभावित करते हैं, जो अन्य वोल्टेज को प्रभावित करते हैं, उन तरीकों से जिन्हें हम "बिट्स जोड़ना" या "गुणन" के रूप में वर्णित कर सकते हैं। वे वास्तव में वे सभी वोल्टेज हैं जो उन बिट्स का प्रतिनिधित्व करते हैं, उसी तरह हम कागज के एक टुकड़े पर 5 चरित्र स्ट्रिंग "2 + 2 = 4" को स्क्रिबल कर सकते हैं और कह सकते हैं कि हमने गणित किया। पेंसिल ग्रेफाइट नंबर दो नहीं है। यह केवल भौतिक प्रतिनिधित्व है जो हम उस संख्या के लिए उपयोग कर रहे हैं।

तो यह वही है जो वास्तविक प्रणाली जबरदस्त उच्च स्तर पर करती है। मैंने अच्छी तरह से छोड़ दिया है ... बहुत ज्यादा सब कुछ ... लेकिन यह काफी सभ्य है जो आपके वास्तविक प्रश्न पर वापस जाने में सक्षम है। यह [रूपक] कैसा दिखेगा?

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

आधुनिक सीपीयू की तुलना में उनकी मशीन सरल है, लेकिन यह सभी बुरे नहीं हैं, जहां तक ​​रूपक चलते हैं। और यह आकर्षक है!


1
वीडियो में संगमरमर की मशीन इसके लिए बहुत सरल है। एक CPU को राज्य की आवश्यकता होती है।
थोरबजोर्न रेवन एंडरसन

@ थोरबजोरन रावणअंडरसेन ट्रू। मुझे लगता है कि अगर मार्बल मशीन में कुछ गेट्स होते हैं जो इसे मारिन के बजाय स्वचालित रूप से लीवर को फेंकने देते हैं, तो यह करीब हो जाएगा।
Cort Ammon - मोनिका

धन्यवाद! इस प्रश्न के समान, मैंने इस एक के ऊपर दिए गए उत्तर पर, असेंबली असेंबली कोड को मशीन कोड माना जाएगा जो कि वोल्टेज और चीजों में अनुवादित है?
टिम हार्डली

@TimHardly "असेंबल्ड," "असेंबली," और "मशीन कोड" के लिए एकमात्र अर्थ का उपयोग करना, असेंबली असेंबली के उत्पाद को मशीन कोड के रूप में परिभाषित किया जाता है (इसलिए हाँ, इसे माना जा सकता है =)। ऐसा कुछ जो मदद कर सकता है, वह यह है कि असेंबली और मशीन कोड दोनों को "तार्किक" अवधारणा माना जाता है, "2 + 2 = 4" की गणितीय अवधारणा के करीब और कागज पर ग्रेफाइट से आगे जिस पर वह समीकरण लिखा गया है। असेंबली / मशीन-कोड असेंबली / मशीन-कोड है कि क्या यह चुंबकीय डिस्क पर संग्रहीत किया जा रहा है, जो कागज के एक टुकड़े पर लिखा गया है, या DRAM में कैपेसिटर में संग्रहीत है।
Cort Ammon - मोनिका

1
अगर मैं दार्शनिक मोम कर सकता हूं, तो मशीन-कोड मशीन-कोड है क्योंकि हम इसे मशीन-कोड की तरह मानते हैं। हम इसे मशीन कोड के रूप में सोचते हैं। मैं .wav प्रारूप में एक ध्वनि का वर्णन करने वाले बाइट्स पर एक सीपीयू को इंगित कर सकता हूं, और यह वास्तव में उन्हें मशीन कोड के रूप में निष्पादित करेगा। परिणामी निष्पादन कुछ भी उपयोगी होने की संभावना नहीं है (क्योंकि ध्वनि का निर्माण मशीन कोड के लिए नहीं किया गया था), और यह रुक सकता है, लेकिन इसे निष्पादित किया जा सकता है।
Cort Ammon - मोनिका

10

की जाँच करें इस वीडियो को विशेष 1:00 1:17 करने के लिए,। जब कंप्यूटर पर कोई प्रोग्राम चल रहा हो तो ठीक वैसा ही दिखता है। रोशनी की दो पंक्तियाँ पता रजिस्टर और डेटा रजिस्टर की वर्तमान सामग्री दिखाती हैं। PDP-11 में एक निर्देश रजिस्टर नहीं है, लेकिन अगर वहाँ एक थे और उसकी सामग्री दिखाने के लिए सामने की तरफ रोशनी थी, तो यह बहुत ही समान दिखाई देगा। 16 रोशनी- उनमें से कुछ पर, उनमें से कुछ बंद।

यदि आप वास्तव में चमकती रोशनी पसंद करते हैं, तो आपके पास छह रजिस्टरों की वर्तमान सामग्री, स्टैक पॉइंटर, प्रोग्राम काउंटर ... को दिखाने के लिए अधिक रोशनी हो सकती है। आगे 32768 रोशनी के लिए आप कैश के प्रत्येक बिट के लिए एक रोशनी रख सकते हैं। तुम भी स्मृति के प्रत्येक बिट के लिए एक प्रकाश हो सकता है ... लेकिन वास्तव में रोशनी का एक बहुत कुछ होगा।

यह एक PDP11-70 है जो 15.2 मेगाहर्ट्ज पर चलता है, और प्रत्येक निर्देश को निष्पादित करने के लिए लगभग 1.5 माइक्रोसेकंड लगते हैं। मानव आंख 1/10 सेकंड तक परिवर्तनों का पता लगा सकती है, और उस समय में, पीडीपी -11 60,000 निर्देशों का पालन कर सकती है। असल में, सब कुछ एक धब्बा है।


वाह, यह एक अच्छा उदाहरण है, मैंने दूसरों को इसे पसंद किया है, उन लाइनों के साथ कुछ जहां आप रोशनी और अन्य चीजें देख सकते हैं। youtube.com/watch?v=yOyaJXpAYZQ
टिम हार्डली


6

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

आरआईएससी-वी के लिए डीवीई तरंगें

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

यह ध्यान देने योग्य है कि यह प्रोसेसर के सिमुलेशन का सिर्फ एक प्रतिनिधित्व है। पहले से तैयार किए गए प्रोसेसर चिप के लिए इस प्रकार के विचार प्राप्त करने का कोई तरीका नहीं है।


2

एक अंधे आदमी की कल्पना करो, जो एक निर्माणाधीन गली से ठोकर खा रहा है। हर जगह छेद और दरारें हैं, इसलिए स्वाभाविक रूप से उसे गिरना चाहिए। यह अंधा आदमी नहीं है, क्योंकि उसके पास निर्देशों के साथ एक पेपर स्क्रॉल है, कब इंतजार करना है, कब चलना है, कहां चलना है और सड़क के अंत तक पहुंचने के लिए अपने पर्यावरण में हेरफेर कैसे करें। असेंबली क्या है, एक आँख बंद करके निर्देशों की सूची - वे केवल इस गली के लिए और इस अंधे आदमी के लिए समझ में आता है। आप सिद्धांत में अकेले निर्देशों से एक 3D मॉडल को फिर से संगठित कर सकते हैं (Decompiling)।

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

इन सभी को ध्यान में रखते हुए और सुसंगत अनुदेश स्क्रॉल करने के लिए संकलक का काम है।

तो क्या मैं वर्णन कर सकता हूं कि एक प्रोग्राम कैसे दिखता है? नहीं, लेकिन क्या हम इसका वर्णन कर सकते हैं कि इसे अंजाम देना कैसा लगेगा? हां, यह एक कूद और दौड़ की तरह महसूस होगा, जैसे दर्पण-किनारे कुछ देखे बिना, निर्देशों की एक सटीक सूची के बाद, जहां भी यह आपको ले जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.