Emulointi on yritys jäljitellä laitetta tietyssä järjestelmässä. Emulaattoreita voidaan rakentaa kolmella tavalla: dynaaminen ja staattinen uudelleen kääntäminen ja tulkinta. Suurimman nopeusvaikutuksen saavuttamiseksi työskennellessä on suositeltavaa käyttää kaikkia kolmea tapaa. Tarkastellaan esimerkkiä tyypillisen prosessoriemulaattorin kirjoittamisesta.
Ohjeet
Vaihe 1
Valitse ohjelmointikieli. Suositeltava ja luultavasti ainoa vaihtoehto on C ja Assembler. C: ssä voit tehdä koodin, joka siirretään muille alustoille. Se on suhteellisen yksinkertainen ymmärtää ja helppo virheenkorjaus, mutta paljon hitaampaa kuin toiset. Asentaja erottuu työn suuresta nopeudesta, se käyttää prosessorirekistereitä, mikä osaltaan auttaa lähentämään ohjelmaa uudelleenkäännettävään. Koodien jäljittäminen ja korjaaminen siinä on kuitenkin hyvin vaikeaa. On tärkeää tuntea valittu kieli hyvin ja optimoida koodi hyvin nopeutta varten.
Vaihe 2
Määritä alkuarvo sykliselle ja ohjelmalaskurille. Syklinen laskuri laskee kellojaksojen lukumäärän, jonka jälkeen keskeytys tapahtuu, ja ohjelmisto-PC näyttää muistialueen, jolla seuraava opcode-käsky on.
Vaihe 3
Kun olet saanut opkoodin, vähennä optiokoodin suorittamiseen tarvittava kellojaksojen määrä silmukkalaskurista. Huomaa, että jotkut komennot eroavat merkintöjen lukumäärästä argumenttien mukaan. Muuta tällaisten komentojen kohdalla ajokoodin laskuri myöhemmin.
Vaihe 4
Kun opcode on suoritettu onnistuneesti, tarkista keskeytysten käynnistämisen tarve. Suorita tässä vaiheessa tehtävät, jotka on kiireellisesti synkronoitava ajoissa.
Vaihe 5
Tarkista jokaisen jakson kulun tarve suorittaa työ loppuun. Muista, että ohjelman tulisi olla modulaarinen, koska suurin osa tietokoneista koostuu moduuleista, ja tyypillisen emulaattorin tulisi mahdollisuuksien mukaan olla sama kuin alkuperäinen järjestelmä. Tämä tarjoaa nopeamman ja helpomman ohjelman virheenkorjauksen, ja voit käyttää samoja moduuleja eri emulaattoreille, koska monet tietokoneet perustuvat samoihin prosessorimalleihin tai videoprosessoreihin.