මෙම පිළිතුරේ බොහෝ අන්තර්ගතයන් මුලින් පැමිණියේ මෙම පිළිතුරෙනි (ඊට පෙර ලියා ඇත්තේ අනෙක් ප්රශ්නය අනුපිටපතක් ලෙස සලකුණු කිරීමට පෙර). ඒ නිසා මම සාකච්ඡා කරන්නේ බිට් 8 අගයන් භාවිතා කිරීම ගැනයි (මෙම ප්රශ්නය බිට් 32 අගයන් ගැන විමසුවද), නමුත් එය හරි නිසා බිට් 8 අගයන් සංකල්පමය වශයෙන් තේරුම් ගැනීමට පහසු වන අතර එම සංකල්ප 32-බිට් අංක ගණිතය වැනි විශාල අගයන්ට අදාළ වේ.
ඔබ බිටු 8 ක් වන සංඛ්යා දෙකක් එකතු කළ විට, ඔබට ලබා ගත හැකි විශාලතම අංකය (0xFF + 0xFF = 1FE). ඇත්ත වශයෙන්ම, ඔබ බිටු 8 කින් යුත් සංඛ්යා දෙකක් ගුණ කළහොත්, ඔබට ලබා ගත හැකි විශාලතම අංකය (0xFF * 0xFF = 0xFE01) තවමත් බිටු 16 ක් වන අතර එය බිටු 8 ට වඩා දෙගුණයකි.
දැන්, ඔබ උපකල්පනය කරන්නේ x-bit ප්රොසෙසරයකට x-bits පිළිබඳ තොරතුරු පමණක් තබා ගත හැකි බවයි. (උදාහරණයක් ලෙස, බිට් 8 ප්රොසෙසරයකට බිට් 8 ක් පමණක් නිරීක්ෂණය කළ හැකිය.) එය නිවැරදි නොවේ. 8-බිට් ප්රොසෙසරයට බිටු 8 කුට්ටි වල දත්ත ලැබේ. (මෙම "කුට්ටි" වල සාමාන්යයෙන් විධිමත් යෙදුමක් ඇත: "වචනයක්". බිට් 8 ප්රොසෙසරයක බිට් 8 වචන භාවිතා වේ. බිට් 64 ප්රොසෙසරයක බිට් වචන 64 ක් භාවිතා කළ හැකිය.)
එබැවින්, ඔබ පරිගණකයට බයිට් 3 ක් ලබා දෙන විට:
බයිට් # 1: MUL උපදෙස්
බයිට් # 2: ඉහළ ඇණවුම් බයිට් (උදා: 0xA5)
බයිට් # 3: පහළ ඇණවුම් බයිට් (උදා: 0xCB)
පරිගණකයට ප්රති result ලයක් ජනනය කළ හැකිය බිටු 8 ට වඩා වැඩිය. CPU විසින් මෙවැනි
ප්රති results ල ජනනය කළ හැකිය:
0100 0000 0100 0010 xxxx xxxx xxxx xxxx 1101 0111
aka:
0x4082xxxxD7
දැන්, මම ඔබට එය අර්ථ නිරූපණය කරමු:
0x යනු පහත දැක්වෙන ඉලක්කම් ෂඩාස්රාකාර වේ.
මම "40" ගැන වඩාත් විස්තරාත්මකව මොහොතකට සාකච්ඡා කරමි.
82 යනු "A" ලේඛනයේ කොටසකි, එය බිටු 8 ක මාලාවකි.
xx සහ xx යනු තවත් ලේඛණ දෙකක කොටසකි, ඒවා නම් කර ඇත්තේ "බී" ලේඛනය සහ "සී" ලේඛනයයි. මම එම බිටු ශුන්ය හෝ වෙනත් අයගෙන් පුරවා නොතිබීමට හේතුව නම්, “ADD” උපදෙස් (CPU වෙත යවනු ලැබේ) එම බිටු උපදෙස් මගින් නොවෙනස්ව පැවතීමට ඉඩ ඇත (නමුත් මෙම උදාහරණයේ මා භාවිතා කරන අනෙකුත් බිටු බොහෝමයක් විය හැකිය සමහර ධජ බිටු හැර, වෙනස් වන්න).
D7 "D" ලේඛනය ලෙස හැඳින්වෙන තවත් බිටු වලට ගැලපේ.
ලේඛනයක් යනු මතකයේ කොටසක් පමණි. රෙජිස්ටාර් සීපීයූ තුළට ගොඩනගා ඇති අතර, එම නිසා සීපීයූවට RAM පොල්ලක මතකය සමඟ අන්තර් ක්රියා කිරීමකින් තොරව රෙජිස්ටාර් වෙත පිවිසිය හැකිය.
එබැවින් 0xA5 වාරයක් 0xCB හි ගණිතමය ප්රති result ලය 0x82D7 වේ.
දැන්, A සහ B රෙජිස්ටර් වෙනුවට A සහ D රෙජිස්ටර වලට හෝ C සහ D රෙජිස්ටර් වලට බිටු බෙදී ගියේ ඇයි? හොඳයි, නැවත වරක්, මෙය මා භාවිතා කරන නියැදි දර්ශනයක් වන අතර, එයින් අදහස් කරන්නේ සැබෑ එකලස් කිරීමේ භාෂාවකට (ඉන්ටෙල් x86 16-බිට්, ඉන්ටෙල් 8080 සහ 8088 භාවිතා කරන පරිදි සහ බොහෝ නව CPU). "සී" ලේඛනය සාමාන්යයෙන් මෙහෙයුම් ගණනය කිරීම සඳහා දර්ශකයක් ලෙස භාවිතා කිරීම (ලූප සඳහා සාමාන්ය) සහ මතක ස්ථාන නියම කිරීමට උපකාරී වන ඕෆ්සෙට් පිළිබඳ තොරතුරු තබා ගැනීම සඳහා "බී" ලේඛනය වැනි පොදු නීති කිහිපයක් තිබිය හැකිය. එබැවින්, සමහර පොදු ගණිතමය කාර්යයන් සඳහා "A" සහ "D" වඩාත් පොදු විය හැකිය.
එක් එක් CPU උපදෙස් සඳහා එකලස් කිරීමේ වැඩසටහන් කරන පුද්ගලයින් විසින් භාවිතා කරන යම් ලියකියවිලි තිබිය යුතුය. එම ලියකියවිලි මඟින් එක් එක් උපදෙස් මගින් භාවිතා කරන රෙජිස්ටර් මොනවාද යන්න සඳහන් කළ යුතුය. (එබැවින් කුමන රෙජිස්ටාර් භාවිතා කළ යුතුද යන්න තේරීම බොහෝ විට නියම කරනු ලබන්නේ එකලස් කිරීමේ භාෂා ක්රමලේඛකයින් නොව CPU හි නිර්මාණකරුවන් විසිනි. කෙසේ වෙතත්, යම් නම්යතාවයක් තිබිය හැකිය.)
දැන්, ඉහත උදාහරණයේ ඇති "40" වෙත ආපසු යාම: එය බිටු මාලාවක් වන අතර එය බොහෝ විට "ධජ ලේඛනය" ලෙස හැඳින්වේ. කොඩි ලේඛනයේ සෑම බිට් එකකටම නමක් ඇත. නිදසුනක් ලෙස, ප්රති over ලය එක් බයිට් එකක් ගබඩා කළ හැකි අවකාශයට වඩා විශාල නම් CPU සැකසිය හැකි “පිටාර ගැලීම්” බිට් ඇත. (“පිටාර ගැලීම” බිට් බොහෝ විට හැඳින්වෙන්නේ “ඕෆ්” යන කෙටි නමිනි. එය ප්රාග්ධනයක් මිස ශුන්ය නොවේ.) මෘදුකාංගයට මෙම ධජයේ වටිනාකම පරීක්ෂා කර “ගැටලුව” දැකිය හැකිය. මෙම බිට් සමඟ වැඩ කිරීම බොහෝ විට ඉහළ මට්ටමේ භාෂාවන් විසින් නොපෙනෙන ලෙස හසුරුවනු ලැබේ, එබැවින් ආරම්භක ක්රමලේඛකයින් බොහෝ විට CPU ධජ සමඟ අන්තර් ක්රියා කරන්නේ කෙසේද යන්න ඉගෙන නොගනී. කෙසේ වෙතත්, එකලස් කිරීමේ ක්රමලේඛකයින් සාමාන්යයෙන් මෙම ධජ වලට වෙනත් විචල්යයන්ට සමාන ආකාරයකින් ප්රවේශ විය හැකිය.
උදාහරණයක් ලෙස, ඔබට බහුවිධ ADD උපදෙස් තිබිය හැකිය. එක් ADD උපදෙස් මඟින් ප්රති results ල බිටු 16 ක් A ලේඛනයේ සහ D ලේඛනයේ ගබඩා කළ හැකි අතර තවත් උපදෙස් මඟින් අඩු බිටු 8 ක් A ලේඛනයේ ගබඩා කර, D ලේඛනය නොසලකා හැර පිටාර ගැලීමේ බිට් නියම කළ හැකිය. පසුව, (A ලේඛනයේ ප්රති results ල ප්රධාන RAM තුළට ගබඩා කිරීමෙන් පසුව), ඔබට තවත් ADD උපදෙස් භාවිතා කළ හැකිය, එය ඉහළ බිටු 8 ක් පමණක් ලේඛනයක ගබඩා කරයි (සමහර විට A ලේඛනයක්.) ඔබට පිටාර ගැලීමේ ධජයක් භාවිතා කිරීමට අවශ්යද? ඔබ භාවිතා කරන ගුණ කිරීමේ උපදෙස් මත රඳා පවතී.
(අපේක්ෂිත ප්රති result ලයට සරිලන තරම් ඔබ අඩු කළ හොත්, සාමාන්යයෙන් "ගලා යන" ධජයක් ද ඇත.)
දේවල් කොතරම් සංකීර්ණ වී ඇත්දැයි ඔබට පෙන්වීමට:
ඉන්ටෙල් 4004 බිටු 4 ක CPU එකක් විය
. Intel 8008 යනු බිටු 8 ක CPU ය. එහි A, B, C, සහ D ලෙස බිටු 8 ක රෙජිස්ටර් තිබී ඇත.
ඉන්ටෙල් 8086 යනු බිට් 16 ක CPU ය. එහි AX, BX, CX, සහ DX ලෙස නම් කරන ලද බිට් 16 රෙජිස්ටර් විය.
ඉන්ටෙල් 80386 බිටු 32 ක CPU එකක් විය. එහි EAX, EBX, ECX, සහ EDX ලෙස නම් කරන ලද බිටු 32 ක් ඇත.
ඉන්ටෙල් x64 CPU වල RAX, RBX, RCX, සහ RDX ලෙස නම් කර ඇති බිට් 64 රෙජිස්ටර් ඇත. X64 චිප්ස් වලට බිට් 16 කේතය (සමහර මෙහෙයුම් ආකාර වල) ධාවනය කළ හැකි අතර බිට් 16 උපදෙස් අර්ථ නිරූපණය කළ හැකිය. එසේ කරන විට, AX ලේඛනය සෑදෙන බිටු යනු EAX ලේඛනය සාදන බිටු වලින් අඩක් වන අතර ඒවා RAX ලේඛනය සෑදෙන බිටු වලින් අඩකි. එබැවින් ඔබ AX හි අගය වෙනස් කරන ඕනෑම වේලාවක ඔබ EAX සහ RAX ද වෙනස් කරයි, මන්ද AX භාවිතා කරන බිටු RAX භාවිතා කරන බිටු වල කොටසකි. . .)
මා සඳහන් කළ ඒවාට වඩා කොඩි සහ ලේඛණ තිබේ. සරල සංකල්පීය උදාහරණයක් සැපයීම සඳහා මම බහුලව භාවිතා කරන ඒවා තෝරා ගතිමි.
දැන්, ඔබ බිටු 8 ක CPU එකක සිටී නම්, ඔබ මතකයට ලියන විට, බිටු 8 ක ලිපිනයක් යොමු කිරීමට ඔබට යම් සීමාවන් සොයා ගත හැකිය, බිටු 4 ක හෝ බිටු 16 ක ලිපිනයක් නොවේ. CPU මත පදනම්ව විස්තර වෙනස් වනු ඇත, නමුත් ඔබට එවැනි සීමාවන් තිබේ නම්, CPU බිටු 8 වචන සමඟ කටයුතු කරයි, එබැවින් CPU බොහෝ විට "8-bit CPU" ලෙස හැඳින්වේ.