Emulering är ett försök att imitera en enhet i ett specifikt system. Det finns tre sätt att bygga emulatorer: dynamisk och statisk rekompilering och tolkning. För att uppnå maximal hastighetseffekt när du arbetar, rekommenderas att du använder alla tre metoderna. Låt oss överväga ett exempel på att skriva en typisk processoremulator.
Instruktioner
Steg 1
Välj ett programmeringsspråk. Det rekommenderade och förmodligen det enda alternativet är C och Assembler. I C kan du skapa kod som skickas till andra plattformar. Det är relativt enkelt att förstå och lätt att felsöka, men mycket långsammare än andra. Monteraren kännetecknas av sin höga arbetshastighet, den använder processorregister, vilket bidrar till att programmet approximeras till det kompilerande. Det är dock mycket svårt att spåra och fixa koder i den. Det är viktigt att känna till det valda språket och optimera koden väl för hastighet.
Steg 2
Tilldela ett initialvärde till cykel- och programräknaren. Den cykliska räknaren räknar antalet klockcykler efter vilka avbrottet inträffar och programvarudatorn visar minnesområdet där nästa opkodinstruktion ligger.
Steg 3
När du har fått opkoden, subtraherar du antalet klockcykler som krävs för att köra opkoden från loopräknaren. Observera att vissa kommandon skiljer sig åt i antal fästingar beroende på argumenten. För sådana kommandon ändrar du räknaren i körkoden senare.
Steg 4
Efter framgångsrik körning av opkoden, kontrollera behovet av att utlösa avbrott. Slutför nu de uppgifter som snabbt måste synkroniseras i tid.
Steg 5
Kontrollera varje gång i cykeln om det är nödvändigt att slutföra sitt arbete. Kom ihåg att programmet ska vara modulärt, eftersom de flesta datorer består av moduler, och en typisk emulator bör, om möjligt, vara densamma som det ursprungliga systemet. Detta ger snabbare och enklare felsökning av programmet, och du kommer att kunna använda samma moduler för olika emulatorer, eftersom många datorer är baserade på samma modeller av processorer eller videoprocessorer.