Informatika arloan, **emuladorea** programak edo bideojokoak haien oinarrizko plataformak ez direnetan exekutatzea ahalbidetzen duen softwareari deritzo. Simuladoreak ez bezala, aurreko hauek programaren portaera kopiatzen saiatzen dira, emuladoreak bestalde, dispositiboa era zehatzean modelatzen saiatzen dira, horrela oinarrizko tresna erabiltzen dela itxuraraziz.

Erabilerak
----------

Erabileren artean hedatuta dagoen bat bideojokoen esperientzia antzeratzea da; dibertimenduzko makinen edo bideokontsolen emulazioak ordenagailu pertsonaletan edo beste bideokontsoletan egiten hain zuen ere. Sistema zaharretako (*abandonware*) jokoen emulazioa, egungo ordenagailu pertsonal eta bideokontsoletan, dispositibo originaletan baino askoz erosoagoa baita. Hala ere, emuladore sortzaileentzat software lizentzia behar izango dute ROM eta BIOS-aren funtzionabilitatea bikoizten dituzten programak idazteko. Honi *high-level emulation* edo *maila handiko emulazio* deritzo. Ohikoa den beste erabilera bat, zaharkituak dauden sistema eragileen edo beste makinentzako edo dispositiboentzako erabilgarri dauden sistema eragileen emulazioa da, sistema eragile hauekin bateragarriak diren progaramak erabiltzeko.

Emulazioa
---------

Teorikoki, Church-Turing-en tesiak edozein giro funtzional beste edozeinen barne emulatu daitekeela esaten du. Praktikoki bestalde, honek zailtasunak ekar ditzazke, batez ere, emulatutako sistemaren portaera dokumentatu barik dagoenean eta alderantzizko ingeniaritza erabiliz ondorioztatu behar denean. Tesian ez da sinkronizazio ezberdintasunei buruz hitz egiten ezta ere; emuladorea oinarrizko hardwarea bezain bizkor ez bada aritzen, softwarea hardware originala baino motelago joango da.

### Egitura

Emuladoreen gehiengoak hardwarearen arkitektura konfigurazio bakarra emulatzen dute soilik. Esplotazio sistema (edo sistema eragile) beharrezkoa bada porgramaren bat emulatzeko, emulatuko da baita ere. Bai esplotazio sistema bai programa bera ere emuladoreak intrepretatu behar ditu, ekipo originalena exekutatzen ari balira. Emulatutako makinaren lengoaiaren intrepretazioaz gain, nahitaezkoa da beste ekipo osoa emulatzea, zein sarrera-irteera dispositiboak, birtualki: memoriako guneren batean idazteak pantailan influentzia badu, honako hau ere emulatu beharko litzateke.

Ekipoaren emulazio osoaren ordez, azalezko bateragarritasun batek balio dezake. Honek emulatutako sistema deiak, sistema anfitrioi batera iztularaziko ditu. Tipikoki, emuladore bat moduluetan banatuko da, bakoitza emulatutako ekipoaren subsistema bakoitzaren elkarrekikoa izango da era zehatzean. Ohikoena, emuladorearen konposaketa jarraian ditugun moduluek osatzen dute:

* Prozesamendu zentraleko unitatearen emuladore bat.
* Memoria subsistemarako modulu bat.
* Sarrera-irteerako dispositiboentzako hainabat modulu.

Ohikoena, busak ez emulatzea da, errendimendu eta soiltasun arraoziengatik, eta periferiko birtualak PZUarekin eta memoria subsistemekin komunikatu daitezen.

#### PZU simuladorea

Prozesamendu zentraleko unitatearen (PZU) simuladorea sarritan emuladorearen atalik konplexuena da. Emuladore askok "aurrepaketatutako PZU simuladoreak erabiltzen dituzte idazteko, makina espezifiko baten emulazio leial eta eraginkor bat lortzeko.PZU simuladorerik arruntena interprete informatikoa izango litzateke, honek, emulatutako programazio-kodearen exekuzio-fluxua jarraituko du eta emulatutako makinaren kode instrukzio bakoitzarentzat, semantikoki originalen baliokide diren instrukzioak kargatuko ditu exekutatuko den prozesadorean.Interpreteak oso hedatuta daude PZU simuladoreetan, inplementaziorako errezagoak dira errendimendu handiko beste aukerekin alderatuz, eta haien abiadura egokia da hamar urte baino gehiagoko konputadoren emulaziorako.

#### Sarrera-irteera dispositiboak

Aurretik aipatu den moduan, emuladoreen gehiengoak ez ditu busen sistema nagusiak emulatzen; sarrera-irteera dispositibo bakoitza kasu berezi gisa tratatzen da, eta ez da interfaze konstante bat existitzen periferiko birtualentzat.Horrek funtzionamenduaren abantaila ekar dezake, sarrerako eta irteerako modulu bakoitza gailu emulatuaren ezaugarrietara egokitu ahal izatea ahalbidetuz. Estandar batean oinarritutako diseinuek, (API bidez bateratutako sarrerek eta irteerek), ordea, eredu sinpleagoak eman ditzakete. Gainera, abantaila gehigarri bat dute, modu "automatikoan" plugin-zerbitzuak erabiltzea ahalbidetzen dute; emuladorean bitartekoen gailu birtualak hornitzeko.

API bidez bateratutako sarrerek eta irteerek ez dute nahitaez benetako hardwarearen busaren egitura islatzen: busaren diseinua hainbat parametro elektrikok mugatzen dute, eta programazio paraleloa maneiatzeko beharra, gehienetan softwarearen inplementazioan alde batera utz daitekeena.

Gailu bakoitza kasu berezi gisa tratatzen duten emuladoreek ere badute horretarako oinarrizko azpiegitura komun bat:

* Etengailuak erabiliz, PZUaren simulagailuak irakur ditzakeen banderak finkatzen dituzten prozeduren bidez, etengailu bat altxatuz gero, PZU birtualari "etengailuak (birtualak) bihurtzeko" aukera emanez.
* Memoria fisikoaz idatzi eta irakurriz, antzeko bi prozeduraren bidez, memoria logikoari aurre egiten dion bitartean (azken horren aurka, aurrekoa alde batera bota daiteke eskuarki, eta, horren ordez, memoriaren konponketari buruzko zuzeneko erreferentziak erabiltzen dira).

### ROM-aren sistema

Emuladoreek ROM irudiak ateratzen dituzte, hau da, antzinako sistemekin erabiltzen ziren kartutxoen, disketeen edo zinten edukia. Fisikoki, PCetan, ROMak memorian kargatu daitezkeen fitxategi bitarrak dira. Hau da, emuladorea kontsola baten funtzioak egiten dituen programa bat da, adibidez, Game Boy Advance edo PDA bat, eta ROM kartutxoa; CD-ROM edo zinta lanak egiten dituen fitxategi bat da, adibidez Mario Bros, Pokemon, etab...

Kanpo estekak
-------------

|  |  |
| --- | --- |
| Autoritate kontrola | 
* **Wikimedia proiektuak**
* Wd Datuak: Q202871
* Commonscat Multimedia: Emulation software / Q202871

---

* **Identifikadoreak**
* BNE: XX552380
* BNF: 13746545d (data)
* GND: 4328746-3
* LCCN: sh85042946

 |

* Wd Datuak: Q202871
* Commonscat Multimedia: Emulation software / Q202871