उदाहरण के लिए जब दो सी की तुलना एक सी की तरह भाषा में होती है:
if (3 > 2) {
// do something
}
यह निर्णय कैसे लिया जाता है कि 3 आंतरिक रूप से किए गए 2 (सच) या अधिक (झूठे) से अधिक है?
उदाहरण के लिए जब दो सी की तुलना एक सी की तरह भाषा में होती है:
if (3 > 2) {
// do something
}
यह निर्णय कैसे लिया जाता है कि 3 आंतरिक रूप से किए गए 2 (सच) या अधिक (झूठे) से अधिक है?
जवाबों:
खरगोश छेद नीचे सभी तरह, एह? ठीक है, मैं इसे आज़माऊँगा।
चरण 1. सी से मशीन की भाषा में
C संकलक आपकी तुलना को मशीन भाषा में संग्रहीत opcodes में बदल देता है । मशीन भाषा संख्याओं की एक श्रृंखला है जो सीपीयू निर्देशों के रूप में व्याख्या करता है। इस मामले में दो ऑपकोड होंगे: "कैरी के साथ घटाना" और "कैरी इज़ जम्प"। दूसरे शब्दों में, 2 को एक निर्देश में 3 से घटाया जाता है, और अगला निर्देश यह देखने के लिए जांचता है कि क्या यह बह निकला है। संख्या 2 और 3 को उन स्थानों पर लोड करने के लिए दो निर्देशों से पहले किया जाएगा जहां उनकी तुलना की जा सकती है।
MOV AX, 3 ; Store 3 in register AX
MOV BX, 2 ; Store 2 in register BX
SUB AX, BX ; Subtract BX from AX
JC Label ; If the previous operation overflowed, continue processing at memory location "Label"
उपरोक्त में से प्रत्येक में एक द्विआधारी प्रतिनिधित्व है; उदाहरण के लिए, के लिए कोड SUB
है 2D
हेक्स, या 00101101
बाइनरी में।
चरण 2. ALU को ऑपकोड
अंकगणित opcodes चाहते ADD
, SUB
, MUL
, और DIV
बुनियादी पूर्णांक गणित एक का उपयोग कर प्रदर्शन ALU या अंकगणित तर्क इकाई सीपीयू में बनाया गया। कुछ opcodes द्वारा नंबर रजिस्टरों में संग्रहीत किए जाते हैं ; अन्य ऑपकोड्स चिप को निर्देश देते हैं कि समय पर रजिस्टरों में जो कुछ भी संग्रहीत किया जाता है, उस पर गणित करने के लिए ALU को कॉल करें।
नोट: इस बिंदु पर हम किसी भी चीज़ से परे हैं कि कोई भी सॉफ्टवेयर इंजीनियर इस बारे में चिंता करेगा कि क्या सी जैसे 3 जीएल के साथ काम करना है ।
चरण 3. ALU, अर्ध-योजक और पूर्ण-योजक
क्या आप जानते हैं कि आपके द्वारा जाने वाले सभी गणितीय संचालन को NOR संचालन की एक श्रृंखला तक कम किया जा सकता है । और यह ठीक है कि कैसे ALU काम करता है।
ALU केवल बाइनरी नंबर के साथ काम करना जानता है, और केवल OR, NOT, AND, और XOR जैसे तार्किक कार्य कर सकता है। बाइनरी जोड़ और घटाव का कार्यान्वयन तार्किक संचालन की एक श्रृंखला के साथ पूरा किया जाता है, एक निश्चित तरीके से एक सब-सिस्टम में जोड़ा जाता है, जिसे एक योजक के रूप में जाना जाता है । ये सबसिस्टम "आधे-योजक" के एक नेटवर्क से बने होते हैं जो दो बिट्स पर काम करते हैं और उनके एकल-बिट योग और एकल-बिट कैरी फ़्लैग का निर्धारण करते हैं। इन्हें एक साथ जोड़कर, ALU 8, 16, 32 आदि बिट्स के साथ संख्याओं पर संचालन कर सकता है।
घटाव के बारे में क्या? घटाव इसके अलावा का एक और रूप है:
A - B = A + (-B)
ALU गणना करता है -B
लेने के द्वारा दो के पूरक की B
। एक बार जब इसे ऋणात्मक में बदल दिया जाता है, तो योजक के मूल्य को जमा करने पर घटाव ऑपरेशन में परिणाम होगा।
चरण 4: अंतिम चरण: ऑन-चिप ट्रांजिस्टर
योजक के संचालन विद्युत घटकों के संयोजन का उपयोग करके कार्यान्वित किए जाते हैं जो "लॉजिक गेट्स" बनाने के लिए बातचीत करते हैं, जैसे कि ट्रांजिस्टर-ट्रांजिस्टर लॉजिक या टीटीएल में पाया जाता है , या सीएमओएस में । कुछ उदाहरणों के लिए यहां क्लिक करें कि ये कैसे वायर्ड हैं।
एक चिप पर, बेशक, इन "सर्किट" को लाखों छोटे-छोटे प्रवाहकीय और गैर-प्रवाहकीय सामग्री में लागू किया जाता है, लेकिन सिद्धांत एक ही है जैसे कि वे एक ब्रेडबोर्ड पर पूर्ण आकार के घटक थे। इस वीडियो को देखें जो आपको एक माइक्रोचिप पर इलेक्ट्रॉनिक माइक्रोस्कोप के लेंस के माध्यम से दिखाता है।
कुछ अतिरिक्त नोट:
आपके द्वारा लिखा गया कोड वास्तव में संकलक द्वारा पूर्ववर्ती होगा और रन टाइम पर निष्पादित नहीं किया जाएगा, क्योंकि यह केवल स्थिरांक से बना होता है।
कुछ कंपाइलर मशीन कोड को संकलित नहीं करते हैं, लेकिन अभी तक एक और परत पेश करते हैं, जैसे कि जावा बाइटकोड या .NET मध्यवर्ती भाषा। लेकिन अंत में यह सब मशीन भाषा के माध्यम से निष्पादित हो जाता है।
कुछ गणितीय संचालन वास्तव में गणना नहीं किए जाते हैं; वे एक अंकगणित सहसंसाधक इकाई पर बड़े पैमाने पर तालिकाओं में दिखते हैं, या लुकअप और संगणना या प्रक्षेप के संयोजन होते हैं। एक उदाहरण एक वर्गमूल की गणना करने के लिए कार्य होगा । आधुनिक पीसी सीपीयू प्रत्येक में एक अस्थायी बिंदु कोप्रोसेसिंग इकाई है जिसे प्रत्येक सीपीयू कोर में बनाया गया है।
CMP
कि इस्तेमाल किया जाएगा, नहीं SUB
- लेकिन फिर वह कमोबेश " SUB
परिणाम को नजरअंदाज किया जाता है और केवल झंडे सेट किए जाते हैं"
if
पूरी तरह से अनदेखा करें कोडिंग के लिए सीधे जा रहे हैंdo something
।