අනුකරණය යනු බහු මුහුණුවරකි. මෙන්න මූලික අදහස් සහ ක්රියාකාරී සංරචක. මම එය කැබලිවලට කඩා පසුව සංස්කරණයන් හරහා විස්තර පුරවන්නෙමි. මම විස්තර කිරීමට යන බොහෝ දේ සඳහා සකසනයන්ගේ අභ්යන්තර ක්රියාකාරිත්වය පිළිබඳ දැනුමක් අවශ්ය වනු ඇත - එකලස් කිරීමේ දැනුම අවශ්ය වේ. මම සමහර දේවල් ගැන ටිකක් අපැහැදිලි නම්, කරුණාකර ප්රශ්න අසන්න එවිට මට මෙම පිළිතුර තවදුරටත් දියුණු කර ගත හැකිය.
මූලික අදහස:
ප්රොසෙසරයේ හැසිරීම සහ තනි කොටස් හැසිරවීම මගින් අනුකරණයන් ක්රියා කරයි. ඔබ පද්ධතියේ එක් එක් කැබැල්ලක් ගොඩනඟා දෘඩාංගවල වයර් මෙන් කෑලි සම්බන්ධ කරන්න.
සකසනය අනුකරණය කිරීම:
ප්රොසෙසර අනුකරණය හැසිරවීමේ ක්රම තුනක් තිබේ:
- අර්ථ නිරූපණය
- ගතික නැවත සකස් කිරීම
- ස්ථිතික නැවත සකස් කිරීම
මෙම සියලු මාර්ග සමඟ, ඔබට එකම සමස්ත ඉලක්කයක් ඇත: ප්රොසෙසරයේ තත්වය වෙනස් කිරීමට සහ 'දෘඩාංග' සමඟ අන්තර් ක්රියා කිරීමට කේත කැබැල්ලක් ක්රියාත්මක කරන්න. ප්රොසෙසර් ස්ටේට් යනු දී ඇති ප්රොසෙසර් ඉලක්කයක් සඳහා ප්රොසෙසර් රෙජිස්ටර්, බාධා කිරීම් හසුරුවන්නන් යනාදියයි. මෙම 6502, ඔබ ලේඛන නියෝජනය 8-bit නිඛිල ගණනාවක් ඇති කියලා: A
, X
, Y
, P
, හා S
, ඔබට බිට් 16 PC
ලේඛනයක් ද ඇත.
අර්ථ නිරූපණය සමඟ, ඔබ IP
(උපදෙස් දර්ශකය - PC
වැඩසටහන් කවුන්ටරය ලෙසද) ආරම්භ කර මතකයෙන් උපදෙස් කියවන්න. ඔබේ කේතය මෙම උපදෙස් විග්රහ කරන අතර ඔබේ ප්රොසෙසරය මඟින් නියම කර ඇති පරිදි ප්රොසෙසරයේ තත්වය වෙනස් කිරීමට මෙම තොරතුරු භාවිතා කරයි. අර්ථ නිරූපණයෙහි මූලික ගැටළුව වන්නේ එය ඉතා මන්දගාමී වීමයි; ඔබ ලබා දුන් උපදෙස් හසුරුවන සෑම අවස්ථාවකම, ඔබ එය විකේතනය කර අවශ්ය මෙහෙයුම සිදු කළ යුතුය.
ගතික ප්රතිනිර්මාණය සමඟ, ඔබ අර්ථ නිරූපණයට සමාන කේතයක් හරහා ක්රියා කරයි, නමුත් ඔප්කෝඩ් ක්රියාත්මක කිරීම වෙනුවට, ඔබ මෙහෙයුම් ලැයිස්තුවක් සාදයි. ඔබ ශාඛා උපදෙස් වෙත ළඟා වූ පසු, ඔබ මෙම මෙහෙයුම් ලැයිස්තුව ඔබේ සත්කාරක වේදිකාව සඳහා යන්ත්ර කේතයට සම්පාදනය කරයි, ඉන්පසු ඔබ මෙම සම්පාදනය කළ කේතය හැඹිලි කර ක්රියාත්මක කරන්න. ඔබ නැවත දී ඇති උපදෙස් කණ්ඩායමකට පහර දුන් විට, ඔබට සිදුවන්නේ හැඹිලියෙන් කේතය ක්රියාත්මක කිරීම පමණි. .
ස්ථිතික ප්රතිසංවිධානය සමඟ, ඔබ ගතික ප්රතිචක්රීකරණය මෙන් ම සිදු කරයි, නමුත් ඔබ ශාඛා අනුගමනය කරයි. ඔබ අවසන් කරන්නේ වැඩසටහනේ ඇති සියලුම කේත නියෝජනය කරන කේත කැබැල්ලක් තැනීමෙනි, එය තවදුරටත් බාධාවකින් තොරව ක්රියාත්මක කළ හැකිය. පහත සඳහන් ගැටළු සඳහා නොවේ නම් මෙය හොඳ යාන්ත්රණයක් වනු ඇත:
- ආරම්භ කිරීමට වැඩසටහනේ නොමැති කේතය (උදා: සම්පීඩිත, සංකේතාත්මක, ධාවන වේලාවේදී උත්පාදනය / වෙනස් කිරීම යනාදිය) නැවත සකස් නොකෙරේ, එබැවින් එය ක්රියාත්මක නොවේ
- දී ඇති ද්විමය තුළ ඇති සියලුම කේත සොයා ගැනීම හැල්ටිං ගැටලුවට සමාන බව ඔප්පු වී ඇත
මේවායින් 99% ක්ම ස්ථිතික නැවත සකස් කිරීම සම්පූර්ණයෙන්ම කළ නොහැකි වේ. වැඩි විස්තර සඳහා, මයිකල් ස්ටීල් ස්ථිතික නැවත සකස් කිරීම පිළිබඳව විශාල පර්යේෂණ කිහිපයක් කර ඇත - මා දැක ඇති හොඳම දේ.
ප්රොසෙසර අනුකරණයට අනෙක් පැත්ත වන්නේ ඔබ දෘඩාංග සමඟ අන්තර්ක්රියා කරන ආකාරයයි. මෙය සැබවින්ම පැති දෙකක් ඇත:
- සකසනය වේලාව
- හැසිරවීමට බාධා
සකසනය වේලාව:
සමහර වේදිකා - විශේෂයෙන් පැරණි කොන්සෝල වන NES, SNES යනාදිය - ඔබේ ඉමුලේටරයට දැඩි වේලාවක් සම්පුර්ණයෙන්ම අනුකූල වීමට අවශ්ය වේ. NES සමඟ, ඔබට PPU (පික්සෙල් සැකසුම් ඒකකය) ඇති අතර එමඟින් CPU එහි මතකයට නිශ්චිත වේලාවක පික්සෙල් දැමිය යුතුය. ඔබ අර්ථ නිරූපණය භාවිතා කරන්නේ නම්, ඔබට පහසුවෙන් චක්ර ගණනය කර නිසි වේලාව අනුකරණය කළ හැකිය; ගතික / ස්ථිතික ප්රතිසංවිධානය සමඟ, දේවල් / ගොඩක් / වඩා සංකීර්ණ වේ.
බාධා කිරීම් හැසිරවීම:
CPU දෘඩාංග සමඟ සන්නිවේදනය කරන මූලික යාන්ත්රණය වන්නේ බාධා කිරීම් ය. සාමාන්යයෙන්, ඔබේ දෘඩාංග සංරචක CPU වෙත එය බාධා කරන්නේ කුමක් දැයි කියනු ඇත. මෙය ඉතා සරල ය - ඔබේ කේතය දී ඇති බාධාවක් විසි කරන විට, ඔබ බාධා කිරීම් හසුරුවන වගුව දෙස බලා නිසි ඇමතුමක් ලබා ගන්න.
දෘඩාංග අනුකරණය:
දී ඇති දෘඩාංග උපාංගයක් අනුකරණය කිරීමට පැති දෙකක් තිබේ:
- උපාංගයේ ක්රියාකාරිත්වය අනුකරණය කිරීම
- සත්ය උපාංග අතුරුමුහුණත් අනුකරණය කිරීම
දෘ drive තැටියක කාරණය ගන්න. පසුබිම් ආචයනය, කියවීම / ලිවීම / ආකෘති පත්ර ආදිය නිර්මාණය කිරීමෙන් ක්රියාකාරිත්වය අනුකරණය කරනු ලැබේ. මෙම කොටස සාමාන්යයෙන් ඉතා සරල ය.
උපාංගයේ සත්ය අතුරුමුහුණත ටිකක් සංකීර්ණයි. මෙය සාමාන්යයෙන් මතක සිතියම්ගත කළ රෙජිස්ටර වල එකතුවකි (උදා: සං sign ා කිරීම සඳහා උපාංගය බලා සිටින මතකයේ කොටස්) සහ බාධා කිරීම්. දෘ drive තැටියක් සඳහා, ඔබට කියවීමේ විධාන, ලිවීම් යනාදිය තැන්පත් කර ඇති මතක සිතියම් ගත කළ හැකි ප්රදේශයක් තිබිය හැක, ඉන්පසු මෙම දත්ත නැවත කියවන්න.
මම වඩාත් විස්තරාත්මකව යන්නෙමි, නමුත් ඔබට එය සමඟ යා හැකි ක්රම මිලියනයක් ඇත. ඔබට මෙහි කිසියම් නිශ්චිත ප්රශ්නයක් ඇත්නම්, විමසීමට නිදහස්ව සිටින්න, මම තොරතුරු එක් කරන්නෙමි.
සම්පත්:
මම නිරයක් මෙතන ඉතා හොඳ ලබා තියෙනවා හිතන්නේ, නමුත් එහි වේ ටොන් අමතර ප්රදේශවල. ඕනෑම ප්රශ්නයකට උදව් කිරීමට වඩා මම සතුටු වෙමි; අතිමහත් සංකීර්ණතාව නිසා මම බොහෝ විට නොපැහැදිලි වී සිටිමි.
අනිවාර්ය විකිපීඩියා සම්බන්ධතා:
සාමාන්ය අනුකරණ සම්පත්:
- සොෆාර් - මා විසින් ආරම්භය අනුකරණය කිරීම, මුලින්ම ඉමුලේටර් බාගත කිරීම සහ අවසානයේදී ඔවුන්ගේ අතිවිශාල ලේඛන ලේඛන කොල්ලකෑම මෙහි දී සිදු විය. ඔබට තිබිය හැකි පරම හොඳම සම්පත මෙයයි.
- NGEmu - බොහෝ direct ජු සම්පත් නොවේ, නමුත් ඔවුන්ගේ සංසද පරාජය කළ නොහැකි ය.
- RomHacking.net - ජනප්රිය කොන්සෝල සඳහා යන්ත්ර සැකැස්ම පිළිබඳ සම්පත් ලේඛන අංශයේ අඩංගු වේ
යොමු කිරීමට ඉමියුලේටර් ව්යාපෘති:
- අයන්බබෙල් - මෙය .NET සඳහා වන අනුකරණ වේදිකාවක් වන අතර එය නෙමර්ලේ ලියා ඇති අතර පියාසර කරන විට C # වෙත කේතය නැවත සකස් කරයි. වියාචනය: මෙය මගේ ව්යාපෘතියයි, එබැවින් නිර්ලජ්ජිත ප්ලග් එකට සමාව දෙන්න.
- BSnes - චක්ර-පරිපූර්ණ නිරවද්යතාවයේ ඉලක්කය සහිත නියම SNES ඉමුලේටරයක් .
- MAME - මෙම ආර්කේඞ් ප්රොජෙක්ට්. විශිෂ්ට සඳහනක්.
- 6502asm.com - මෙය සිසිල් කුඩා සංසදයක් සහිත ජාවාස්ක්රිප්ට් 6502 ඉමුලේටරයකි .
- dynarec'd 6502asm - මෙය මම දිනක් හෝ දෙකක් තුළ කළ කුඩා හැක් එකකි. මම දැනට පවතින ඉමියුලේටරය 6502asm.com වෙතින් ගෙන විශාල වේගයකින් වැඩි කිරීම සඳහා කේතය ජාවාස්ක්රිප්ට් වෙත ගතිකව නැවත සකස් කිරීමට එය වෙනස් කළෙමි.
සකසනය නැවත සකස් කිරීමේ යොමුව:
- (ඉහත සඳහන් කර ඇති) මයිකල් ස්ටීල් විසින් සිදු කරන ලද ස්ථිතික ප්රතිසංවිධානය පිළිබඳ පර්යේෂණ මෙම ලිපියෙන් අවසන් වූ අතර ඔබට මූලාශ්රය සහ එවැනි දේ මෙහි සොයාගත හැකිය .
අතිරේක:
මෙම පිළිතුර ඉදිරිපත් කර වසරකට වැඩි කාලයක් ගත වී ඇති අතර, සියලු අවධානයෙන් එය ලබාගෙන ඇති අතර, සමහර දේවල් යාවත්කාලීන කිරීමට කාලය පැමිණ ඇතැයි මම සිතුවෙමි.
සමහර විට මේ වන විට වඩාත් සිත්ගන්නාසුලු දෙය වන්නේ ඉහත සඳහන් කළ මයිකල් ස්ටීල් විසින් ආරම්භ කරන ලද libcpu ය . එය නැවත සකස් කිරීම සඳහා එල්එල්වීඑම් භාවිතා කරන (ස්ථිතික හා ගතික!) CPU මධ්යයන් විශාල සංඛ්යාවක් සඳහා සහාය වීමට අදහස් කරන පුස්තකාලයකි. එය විශාල විභවයක් ඇති අතර, එය අනුකරණය සඳහා විශාල දේ කරනු ඇතැයි මම සිතමි.
emu-docs ද මගේ අවධානයට යොමු කර ඇති අතර, එය පද්ධති ලේඛනවල විශාල ගබඩාවක් ඇති අතර එය අනුකරණ අරමුණු සඳහා ඉතා ප්රයෝජනවත් වේ. මම එහි වැඩි කාලයක් ගත කර නැත, නමුත් ඔවුන් සතුව විශාල සම්පත් ඇති බව පෙනේ.
මෙම ලිපිය ප්රයෝජනවත් වීම ගැන මම සතුටු වන අතර, වසර අවසානයේදී / ලබන වසර මුලදී මගේ බූරුවාගෙන් ඉවත් වී මෙම විෂය පිළිබඳ මගේ පොත අවසන් කළ හැකි යැයි මම බලාපොරොත්තු වෙමි.