Emuliacija yra bandymas imituoti įrenginį konkrečioje sistemoje. Yra trys būdai sukurti emuliatorius: dinaminis ir statinis kompiliavimas ir interpretavimas. Norint pasiekti maksimalų greičio efektą dirbant, rekomenduojama naudoti visus tris metodus. Panagrinėkime tipiško procesoriaus emuliatoriaus rašymo pavyzdį.
Nurodymai
1 žingsnis
Pasirinkite programavimo kalbą. Rekomenduojama ir bene vienintelė alternatyva yra C ir Assembler. C, galite sukurti kodą, kuris bus perkeltas į kitas platformas. Tai gana paprasta suprasti ir lengvai derinti, bet daug lėčiau nei kiti. Asembleris išsiskiria dideliu darbo greičiu, jis naudoja procesorių registrus, kurie prisideda prie programos priartinimo prie perkompiliuojamojo. Tačiau labai sunku sekti ir taisyti kodus. Svarbu gerai mokėti pasirinktą kalbą ir gerai optimizuoti greitį.
2 žingsnis
Priskirkite pradinę reikšmę cikliniam ir programų skaitikliui. Ciklinis skaitiklis suskaičiuoja laikrodžio ciklų, po kurių įvyksta pertraukimas, skaičių, o programinės įrangos kompiuteris rodo atminties plotą, kuriame yra kita opcode instrukcija.
3 žingsnis
Gavę opkodą, atimkite iš ciklo skaitiklio laikrodžio ciklų skaičių, kurio reikia, norint įvykdyti opkodą. Atminkite, kad kai kurios komandos skiriasi nuo žymių skaičiaus, priklausomai nuo argumentų. Tokioms komandoms vėliau pakeiskite skaitiklį vykdymo kode.
4 žingsnis
Sėkmingai įvykdę operacinį kodą, patikrinkite, ar reikia suaktyvinti pertraukimus. Šiuo metu atlikite užduotis, kurias reikia skubiai sinchronizuoti laiku.
5 žingsnis
Patikrinkite kiekvieną ciklo praėjimą, ar reikia užbaigti jo darbą. Atminkite, kad programa turėtų būti modulinė, nes daugumą kompiuterių sudaro moduliai, o tipinis emuliatorius, jei įmanoma, turėtų būti toks pat kaip ir pradinė sistema. Tai leis greičiau ir lengviau derinti programą, o tuos pačius modulius galėsite naudoti skirtingiems emuliatoriams, nes daugelis kompiuterių yra pagrįsti tais pačiais procesorių ar vaizdo procesorių modeliais.