Instruction encoding field budgets और branch ranges
लक्ष्य और स्पष्ट contracts
Opcode/register/immediate bits बाँटें, unambiguous expanding opcodes गिनें और signed scaled branch target की representability तय करें। पूर्वज्ञान: addressing पाठ, binary integers तथा two's-complement range। Number representation फिर नहीं पढ़ाते। हर उदाहरण अपना teaching encoding बताता है; वास्तविक MIPS/RISC-V layout न मानें।
Instruction का semantics और उसका bit encoding अलग हैं। Register operand field में register number होता है, data नहीं। R registers नाम देने को ceil(log2 R) bits चाहिए। R power of two न हो तो कुछ patterns unused/reserved हो सकते हैं। 2^b patterns की अधिकतम क्षमता से सभी patterns valid operations होना सिद्ध नहीं।
1. हर bit ठीक एक बार गिनें
W-bit instruction में opcode o bits, r register fields, प्रत्येक g bits, और अन्य field न हों तो immediate=W−o−rg bits। Mode/function/reserved fields हों तो उन्हें भी घटाएँ। कभी opcode तथा function मिलकर operation चुनते हैं; primary opcode अकेला हर ISA में पूरा operation नहीं चुनता।
उदाहरण: 24-bit format, 32 registers, दो register operands, 6-bit opcode, अन्य fields नहीं। Register field पाँच bits; immediate=24−6−10=8 bits। Instruction के नियम अनुसार unsigned 0..255 या signed −128..127। Primary opcodes अधिकतम 64। यदि registers 64 हो जाएँ और बाकी format वही रहे, register fields छह-छह bits तथा immediate छह bits बचेगा। Fixed budget में अधिक registers अन्य fields की जगह लेते हैं।
Instruction width, register width और address width एक नहीं। 16-bit instruction 32-bit registers पर काम कर सकता है। छोटा displacement full-width base के साथ अपनी range से कहीं बड़ी memory access कर सकता है।
2. Expanding opcode और स्पष्ट decoding
16-bit word को चार 4-bit fields में बाँटें। Three-register format में 4-bit opcode और तीन register names हैं। पहले field के 16 में 12 patterns इन operations को दें; बाकी चार two-register format के escapes हैं। Escape के बाद अगला चार-bit field opcode बढ़ाता है, दो fields registers के लिए बचते हैं। Two-register operations की क्षमता 4×16=64 है, 256 नहीं; पहले format के prefixes फिर इस्तेमाल नहीं कर सकते।
इन 64 में 60 two-register operation codes रखें; बाकी चार one-register format के escapes हों। तीसरा चार-bit field opcode बढ़ाता है और आखिरी register चुनता है। One-register operations=4×16=64। यह operations की संख्या है, सभी operand combinations सहित words की नहीं। Decoder prefix से बाकी fields का अर्थ चुनता है। एक prefix एक साथ साधारण छोटा opcode तथा escape नहीं हो सकता।
स्वतंत्र जाँच: three-register words=12×16^3=49152; two-register words=60×16^2=15360; one-register words=64×16=1024। कुल 65536=2^16। Words overlap नहीं करते और इस उदाहरण में सभी patterns allocate हैं।
3. Scaled signed branch field
इस अलग उदाहरण में चार-byte instructions हैं और P पर branch का target=(P+4)+4d; d आठ-bit signed integer है। Base next PC, scale चार bytes। d की range −128..127 से byte displacement −512..508, चार के multiples में है। Positive/negative limits असमान हैं।
Forward उदाहरण: P=1000, bits 11110101 का अर्थ −11। Target=1004+4(−11)=960। ग्यारह bytes नहीं, ग्यारह four-byte units घटते हैं।
Inverse उदाहरण: इच्छित target T से d=(T−(P+4))/4 निकालें। यह पूर्णांक और −128..127 में होना चाहिए। P=1000 पर targets 492..1512, हर चार bytes पर हैं। 1516 aligned है लेकिन d=128 range से बाहर। 1002 पास है लेकिन d=−0.5, इसलिए representable नहीं। 960 के लिए d=−11 और unsigned encoding 256−11=245=0xF5। यहाँ address wraparound नहीं है।
4. Reach, capacity और code size
आठ-bit branch field में 256 encodings, इसलिए fixed P से 256 target positions हैं। 1024-byte interval के हर byte तक नहीं पहुँचता। सबसे छोटे/बड़े reachable addresses में 1020 bytes का अंतर है। Word-scaled displacement byte-address field नहीं; opcode count program के instruction count जैसा नहीं।
सामान्य गलतियाँ
Word width, सभी explicit/implicit fields, register count और reserved prefixes लिखें। Branch में base, signed width तथा scale पहले तय करें। Inverse encoding में range से पहले divisibility जाँचें। Patterns, operations और operand combinations अलग रखें। ये 2026 machine-instruction concepts के teaching formats हैं, भविष्य के syllabus या वास्तविक ISA का दावा नहीं।
मौलिक अभ्यास: छह single-correct MCQ
ये मौलिक शिक्षण प्रश्न हैं, पिछले वर्षों के प्रश्न नहीं। ठीक एक उत्तर चुनें।
P01. 32-bit format: 6-bit opcode, 32 registers चुनने वाले तीन fields, बाकी केवल immediate। Immediate width?
A. 5 bits B. 11 bits C. 15 bits D. 26 bits
उत्तर: B
A: पाँच हर register field की width है।
B: 32−6−3×5=11 bits।
C: 15 bits तीन register fields लेते हैं।
D: 26 में registers नहीं घटाए।
P02. 24 अलग register names encode करने को कितने bits चाहिए?
A. 4 B. 5 C. 6 D. 24
उत्तर: B
A: चार bits केवल 16 नाम देते हैं।
B: ceil(log2 24)=5; 32 में कुछ patterns unused हैं।
C: छह पर्याप्त लेकिन न्यूनतम नहीं।
D: Binary index में प्रति register एक bit नहीं चाहिए।
P03. 16-bit word के 4-bit fields हैं। 14 primary opcodes तीन registers लेते हैं; बाकी दो prefixes चार bits बढ़कर two-register operations बनाते हैं। अधिकतम कितने?
A. 16 B. 32 C. 224 D. 256
उत्तर: B
A: दो escapes, हर एक में 16 extensions हैं।
B: (16−14)×16=32।
C: 224 occupied prefixes गिनता है, available नहीं।
D: सभी 16 prefixes उपलब्ध नहीं।
P04. P=200 पर target=P+4+4d है, d signed 6-bit। बिना wraparound सबसे बड़ा target?
A. 328 B. 332 C. 452 D. 235
उत्तर: A
A: अधिकतम d=31; 204+124=328।
B: यह गलत रूप से d=32 लेता है।
C: यह d=62 लेता है, जो signed छह-bit range −32..31 से बाहर है।
D: 31 bytes जोड़कर चार का scale छोड़ा।
P05. P=1000, target=P+4+4d, d signed 8-bit। कौन-सा target representable नहीं?
A. 492 B. 960 C. 1512 D. 1516
उत्तर: D
A: d=−128 valid minimum है।
B: d=−11 valid है।
C: d=127 valid maximum है।
D: d=128 signed maximum से बड़ा है।
P06. P=1000, target=960, नियम target=P+4+4d। d का आठ-bit two’s-complement encoding?
A. 0x0B B. 0xD4 C. 0xF5 D. 0xF6
उत्तर: C
A: 0x0B=+11 है।
B: 0xD4=−44 byte displacement है, चार से भाग नहीं दिया।
C: d=−11; 256−11=245=0xF5।
D: 0xF6=−10 से target 964 होगा।
स्रोत और दायरा
यह 2026 course के बताए भाग का पाठ है, पूरे COA syllabus की समाप्ति नहीं। सभी गणनात्मक उदाहरण और प्रश्न मौलिक हैं। 2027 की पूर्णता का दावा नहीं।
प्रगति सहेजने के लिए साइन इन करें। साइन इन